我的一個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){----}); –