我有一項服務(當它全部說完並完成時)更新數據庫上的值。來自Angular服務的退貨承諾
我想基於結果(成功/失敗)更新視圖範圍,但當然服務使用的http請求是異步的,所以返回值不是立即可用的,並且在控制器中出現未定義。
如果我在控制器內部發出http請求,我會更新回調函數中的範圍,但是因爲我使用的是服務,範圍的umm ... scope(?)不可用。
我在想一個Promise是我需要回來的東西,但也許有一些更簡單的東西。
服務
.service('doStuff',function($http){
this.update = function(data) {
$http.post('http://api.internet', data).then(function(res){
return(res.data.result);
});
}
})
CONTROLLLER
/* service is injected into controller etc. */
var result = doStuff.update(data);
p(result); // undefined (as expected)
我因爲即時通訊從HTTP回調返回算了一下,它會等待結果可用在返回前,但我想我在想念一些東西。
你的方法'this.update'實際上不返回任何東西。你需要將它改爲'return $ http.post(..)' –