AngularJS工厂、服务和HTTP使用

AngularJS Factory, Service and HTTP Usage

本文关键字:HTTP 使用 服务 工厂 AngularJS      更新时间:2023-09-26

我刚开始学习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是一个异步调用,您不能从中返回!您可以使用.then来继续promise模式。您的工厂将更改为:

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;
});