2016-04-21 156 views
1

我正在使用AngularJS 1.3.5,我试图从json文件中获取信息。 这里是我的代码: HTML文件:

<!DOCTYPE html> 
 
<html> 
 
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.3.5/angular.min.js"></script> 
 
<script src="js/controllers/MainController.js"></script> 
 
<script src="js/services/myapp.js"></script> 
 
<script src="js/app.js"></script> 
 
<body ng-app="app"> 
 

 
<div ng-controller="MainController"> 
 

 
      
 
       <div ng-repeat="content in contents"> 
 
\t \t \t 
 

 
<a ng-href="{{data.FolderPath}}">{{data.FolderPath}}</a> 
 
       
 
\t \t \t \t \t 
 
        
 
       </div> 
 
      
 
     
 
</div> 
 
</body> 
 
</html>

Javascript文件: MainController.js

app.controller('MainController', ['$scope', 'myapp', function($scope, myapp) { 
 
    myapp.success(function(data) { 
 
    $scope.FolderPath = data; 
 
    }); 
 
}]);

myapp.js

app.factory('myapp', ['$http', function($http) { 
 
    return $http.get('C:\Users\nouri\Desktop\configFile.json') 
 
      .success(function(data) { 
 
       return data; 
 
      }) 
 
      .error(function(err) { 
 
       return err; 
 
      }); 
 
}]);

最后app.js

var app = angular.module('FolderApp', []);
我纠正hwoever现在我有一个白色的屏幕的错误,所以我的代码没读什么是我的JSON文件: { “FolderPath”:“C:\ Users \ nouri \ Desktop \ test” } 我该怎么办 enter image description here

+0

你不能从异步函数返回。请参阅[如何从异步调用返回响应?](http://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call) – Tushar

回答

2

好像有2个问题与您的代码

  1. 您正在加载脚本的顺序。加载app.js,然后加载services/myapp.js,然后加入controllers/MainController.js。

    <script src="js/app.js"></script> 
     
        <script src="js/services/myapp.js"></script> 
     
        <script src="js/controllers/MainController.js"></script>

  2. 您的角度模块的名称是FolderApp但你必须引用它作为 '应用'。修改它,因为

    <body ng-app="FolderApp">

编辑
有一个与你正在使用你的工厂的方式的问题。您应该返回一个包含方法的对象,该方法将调用API并返回$ http promise。尝试是这样的:


app.factory('myapp', ['$http', function($http) { 
    return { 
    getJson: function() { 
     return $http.get('C:\Users\nouri\Desktop\configFile.json'); 
    } 
    } 
}]); 

控制器

app.controller('MainController', ['$scope', 'myapp', function($scope, factory) { 
    factory.callApi() 
    .then(function(data) { 
     $scope.FolderPath = data; 
    }); 
}]); 

看看这个fiddler

+0

谢谢它帮助了我,现在我又遇到了另一个问题。我编辑我的问题与我有错误 – nour

+0

你可以张贴错误的提琴手? –

+0

您的工厂实施也存在问题。检查我的编辑。 –

1

文件的顺序很重要......将您的app.js置于顶部,并且您的html中定义的app-name也应该与js相匹配。

1

尝试加载<script src="js/app.js"></script>其他文件(但角核后)

1

在你定义

<body ng-app="app"> 

的HTML,但在JS使用的是前:

var app = angular.module('FolderApp', []); 

变化其中之一2和地点

<script src="js/app.js"></script> 

在上面,你应该确定

+0

谢谢我仍然有这个错误.. angular.js:11500Error:[ng:areq] http://errors.angularjs.org/1.3.5/ng/areq?p0=MainController&p1=not%20a%20function%2C%20got %20Defined at Error(native) at http://ajax.googleapis.com/ajax/libs/angularjs/1.3.5/angular.min.js:6:416 at Ob(http://ajax.googleapis .com/ajax/libs/angularjs/1.3.5/angular.min.js:19:393) at pb(http://ajax.googleapis.com/ajax/libs/angularjs/1.3.5/angular.min .js:19:480) – nour

+0

位于http://ajax.googleapis.com/ajax/libs/angularjs/1.3.5/angular.min.js:75:274 位于http://ajax.googleapis.com/ AJAX /库/ angularjs/1.3.5/angular.min.js:5 7:112 at r(http://ajax.googleapis.com)(http://ajax.googleapis.com/ajax/libs/angularjs/1.3.5/angular.min.js:7:408) at H(http://ajax.googleapis.com /ajax/libs/angularjs/1.3.5/angular.min.js:56:496) at g(http://ajax.googleapis.com/ajax/libs/angularjs/1.3.5/angular.min.js :51:299) – nour

+0

at g(http://ajax.googleapis.com/ajax/libs/angularjs/1.3.5/angular.min.js:51:316)(anonymous function)@ angular.js:11500(匿名函数)@ angular.js:8479k $ apply @ angular.js:14391(匿名函数)@ angular.js:1437e @ angular.js:4138d @ angular.js:1435rc @ angular.js:1455Gd @ angular.js :1349(匿名函数)@ angular.js:25912a @ angular.js:2722c @ angular.js:2992 – nour

1

变化NG-应用= “应用” 到NG-应用= “FolderApp”

+0

使用 https://docs.angularjs.org/api/ngMock从文件 –

+0

获得虚拟数据谢谢你,现在我没有任何错误但是,没有从我的JSON文件显示我有一个白色的屏幕 – nour

0

我修复了这个问题,实际上,出于安全原因,AngularJS无法读取本地json文件。它只能读取在线的。感谢那些帮助我的人^^

相关问题