我看到了这个主题,但这个解决方案无法解决我的问题。
Angularjs ui-router abstract state with resolve
我想尽快描述我的问题。
我必须说明其中一个是抽象的(父母),其中两个人有决心。两个解析make http但子状态不要等父解析结果。孩子如何解决等待父州解决问题
首先进入父状态它没关系,然后去儿童状态,但是儿童状态不要等待父http结果
我的计划是这样的。在所有状态(用于页面刷新)我检查用户cookie如果存在再次加载用户(进行http调用)
所有子状态都使用此用户信息并获取用户的相关数据。
所以我首先需要完成抽象解析http调用。
.state('app', {
url: '/app',
abstract: true,
templateUrl: Route.base('app.html'),
resolve: {
userExist: ['api', function (api) {
var currentUser = cacheService.getUser();
api.loginExistUser(currentUser).then(function (result) {
api.setUser(result.data, true);
});
}]
}
})
.state('app.myFriends', {
url: '/myLingpals',
templateUrl: "myFriends.html",
controller: "myFriendsController",
controllerAs: "vm",
resolve: {
myFriends: ['api' function (api) {
return api.get("myfriends");
}]
}
})
答案 0 :(得分:2)
只需在函数中添加一个返回值:)
return api.loginExistUser(currentUser).then(function (result) {
api.setUser(result.data, true);
});
答案 1 :(得分:0)
感谢你的回答walfrat。但你的解决方案还不够。我尝试着解决问题的方法,在你的帮助下我找到了解决方案。
当我将父解析数据添加到子状态解析依赖关系子解析等待响应时。再次感谢
.state('app', {
url: '/app',
abstract: true,
templateUrl: Route.base('app.html'),
resolve: {
**userExist**: ['api', function (api) {
var currentUser = cacheService.getUser();
api.loginExistUser(currentUser).then(function (result) {
api.setUser(result.data, true);
});
}]
}
}).state('app.myFriends', {
url: '/myLingpals',
templateUrl: "myFriends.html",
controller: "myFriendsController",
controllerAs: "vm",
resolve: {
myFriends: ['api','userExist', function (api,**userExist**) {
return api.get("myfriends");
}]
}
})