我知道已经有一个类似的问题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