我正在使用服務爲本地JSON文件發出http請求。我試圖將成功的HTTP請求中的數據存儲在我的控制器中,但那部分不起作用。然而,http請求似乎在服務上是成功的。在服務上發出http請求,在控制器中獲取響應
var myModule = angular.module("MyApp", [])
.controller('MyController', function(Utilities){
//this is not working
self.socialArr = Utilities.getData("data.json");
}).service('Utilities', function($http) {
var self = this;
self.getData = function(jsonData) {
$http.get(jsonData)
.then(function(response) {
//First function handles success
var theData = response.data;
console.log(theData); //this works (data is logged)
return theData;
}, function(response) {
//Second function handles error
console.log("Error loading JSON data");
});
};
});
使用'$ q'是[反模式](http://stackoverflow.com/questions/23803743/什麼是顯式承諾建設反模式和如何做我避免它)當$ http'已經返回一個承諾 – charlietfl
沒有我創建一個自定義承諾給http返回承諾這種方式它會工作。 – saiyan
不,我創建一個自定義的承諾,以http的方式返回承諾這種方式它將工作。對於使用函數來進行http調用的方法,上面的答案可以工作或使用其承諾inline.see http調用http調用http:// chariotsolutions。 com/blog/post/angularjs-corner-using-promises-q-handle-asynchronous-calls/**關於後期處理**部分怎麼樣 – saiyan