你能告诉我如何阅读json文件。我能够使用控制器读取json文件。但是有办法从工厂读取文件。当我使用工厂时,我得到空的争论......为什么? http://plnkr.co/edit/THdlp00GuSk1NS6rqe5k?p=preview
app.controller("ctrl",['$scope',"$http",'mainInfo',function(s,$http,mainInfo){
s.students = [];
s.guitarVariable = [];
console.log(mainInfo);
s.guitarVariable = mainInfo.content;
/* $http.get('color.json').success (function(data){
s.guitarVariable = data;
}).error(function(err){
alert(err);
}); */
}])
在控制器中使用此代码我能够获取数据。但是使用工厂我得到了空白
/* $http.get('color.json').success (function(data){
s.guitarVariable = data;
}).error(function(err){
alert(err);
}); */
答案 0 :(得分:0)
角度服务是单身人士。目的是提供一个表示应用程序其余部分服务的单个对象。您需要将HTTP调用作为将从服务返回的对象的方法。然后,您将服务注入控制器并从中调用服务方法。 这是一个例子:
SERVICE:
app.factory('mainInfo', function($http) {
return {
//call this method from the controller
getColors: function() {
return $http.get('color.json'); //return the promise object. Use in controller
}
}
});
控制器:
app.controller("ctrl",['$scope',"$http",'mainInfo',function($http,mainInfo){
mainInfo.getColors().success(function(data) {
alert(data);
}).error(function() {
alert("Not working");
});
}]);
答案 1 :(得分:0)
对于一个简单的$ http get of 1文件我可能只是在控制器中执行它,但如果你想使用工厂,你想要返回$http.get('file.json')
然后使用success来等待承诺解决。
对于API,我会使用$ resource - video about resource setup