我有一项服务(当它全部说完并完成时)更新数据库上的值。来自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(..)' –