AngularJS 工厂、服务和 HTTP 使用

AngularJS Factory, Service and HTTP Usage

我是学习新手 angular 并且无法理解一些基础知识。

我的控制器线如下所示:

   $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 服务包装器。

谢谢

你不能只做

$scope.test =  fileLoader.loadFile();

loadFile 是一个异步调用,您不能从中 return!您可以使用 .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;
});