AngularJS工厂,服务和HTTP使用

时间:2015-02-11 18:30:19

标签: javascript angularjs http

我是学习角色的新手,也很难理解一些基础知识。

我的控制器线如下所示:

   $scope.test =  fileLoader.loadFile();

我的工厂服务如下所示:

angular.module('myWellnessTrackerApp')
  .factory('fileLoader', function($http) {

    return{
      loadfile : function(fileLoc){
        $http.get('data/sideEffects.json').success(function(data) {
          // you can do some processing here
          return data;
        });
      }
    };

  });

这会引发错误。但是当我的控制器线

   $scope.test =  fileLoader.data;

我的服务是

angular.module('myWellnessTrackerApp')
  .factory('fileLoader', function($http) {

    var obj = {content:null};


    $http.get('data/sideEffects.json').success(function(data) {
      // you can do some processing here
      obj.content = data;
    });

    return obj;
  });

我不明白,我希望能够理解如何在特定的HTTP服务包装器中提供服务,以请求页面或本地文件并将其返回。

由于

1 个答案:

答案 0 :(得分:2)

你不能做到

$scope.test =  fileLoader.loadFile();

loadFile是异步通话,您无法从中返回!您可以使用.then继续承诺模式。您的工厂将更改为:

loadFile : function(fileLoc){
    return $http.get('data/sideEffects.json').then(function(result) {
        // you can do some processing here
        return result.data;
    });
}

你的控制器:

fileLoader.loadFile().then(function(data) {
    $scope.test = data;
});