如何以角度读取json文件?

时间:2014-08-03 01:06:50

标签: javascript jquery angularjs angularjs-directive

你能告诉我如何阅读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);
        }); */

2 个答案:

答案 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来等待承诺解决。

Looks like this plnkr

对于API,我会使用$ resource - video about resource setup