我知道已經有一個類似的問題Angular-UI Router - Resolve not waiting for promise to resolve?但不完全像我的問題。Angular-UI路由器 - 解決不等待承諾解決應有的狀態切換
我有兩種狀態:
.state('entities', {
url: '/',
...
resolve: {
data: function (xyzService) {
return xyzService.listEntities();
}
})
.state('entities1', {
url: '/entities1',
...
resolve: {
data: function (xyzService) {
return xyzService.listEntities();
}
})
而且這兩個州的要求或依賴於實體()同一集合,這是我從xyzServce.listEntities返回。這個服務方法從它的邊返回實體的數組並返回一個promise。
所以我希望在使用它之前在控制器中有這個'數據'。 當狀態被調用時,在第一次使用控制器的「數據」時,所有工作都很完美。問題出現了,當我打電話舉例說明狀態'實體'之後的狀態'實體',並且最後狀態'實體'時,就是第一個 。 因此,在這個狀態'實體'的決心不等待解決所有依賴項,並在控制器中爲這個狀態我有'數據'沒有數組元素和$解析屬性爲false和一個空的$承諾對象。
那麼你能告訴我爲什麼這種行爲?我應該期望每次調用狀態來解決依賴問題,或者這種方式只在第一次調用頁面時按規範工作?
你能給我一些想法如何解決這個問題?
最好的問候,
請求服務的例子:
angular
.module(SECURITY_MODULE)
.factory('roleService', roleService);
roleService.$inject = ['$resource', 'DOMAINS', 'notificationService', '$filter'];
function roleService($resource, DOMAINS, notificationService, $filter) {
var service = {
...
listRoles: listRoles
...
};
var roleResource = $resource(DOMAINS.api + 'roles/:id/:command/:command2', {id : '@id'}, {
....
'listRoles': {method: 'GET', isArray: true}
});
function listRoles(callbackSuccess, errorCallback) {
var roles = roleResource.listRoles(function() {
callbackSuccess && callbackSuccess(roles);
}, function(error) {
errorCallback && errorCallback(error);
});
return roles;
}
....
return service;
}
能否請您提供服務的實現?如何處理顯示問題的小型jsbin示例? –
你好ajaegle,你現在可以看到它:) – Streetsouls