2015-02-11 193 views
0

我是新来的学习角度和麻烦了解一些基础知识。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服务包装请求页面或本地文件并将其返回。

感谢

回答

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

这仍然会造成一些问题对我来说“不确定是不是一个函数” – LmC 2015-02-11 18:39:09

+0

@LmC - 什么线? – tymeJV 2015-02-11 18:39:49

+0

fileLoader.loadFile()。然后(函数(数据){ – LmC 2015-02-11 18:40:29

相关问题