我的一个AngularJS控制器中包含此行:等待承诺加载资源之前解决
api.tickets.query()
的api
模块包含此:
angular.module('myapp.api', [
'ngResource'
])
.factory('api', function($resource, applicationsService) {
function fetchAppId() {
return applicationsService.getCurrentApp();
}
return {
tickets: $resource('tickets', {
applicationId: fetchAppId
}),
...
}
applicationsService.getCurrentApp()使一个$ HTTP调用本身。所以你可能会看到这个问题 - 这个调用在fetchAppId()返回时可能没有解决。
我该如何解决这个问题?
宾果,感谢马克西姆,像一个魅力工作。欣赏小提琴和细节:) –
我认为它的工作原理是因为$ scope中的承诺等待$ apply()循环完成。正如文档中所说的:“$ q与角度的$ rootScope.Scope Scope模型观察机制集成在一起,这意味着更快地传播分辨率或拒绝到模型中,并避免不必要的浏览器重绘,从而导致UI闪烁。 – Plap
如果有人使用$ resource请求,那么我们需要包含$ promise fetchAppId()。$ promise.then(function(data){----}); –