2015-02-11 97 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

相關問題