我的角度路线如下:
$routeProvider.when('/admin/:one/:two/:three?', {
templateUrl: '/app/partials/admin.html',
controller: 'AdminCtrl',
resolve: {
login: function(LoginService) {
return LoginService.login();
},
admin: function($route, LoginService) {
return LoginService.admin($route.current.params.one, $route.current.params.two, $route.current.params.three);
}
}
});
问题是第二个解析,admin,取决于第一个解析完成(LoginService.admin()调用ensureAuthenticated,这需要LoginService.login()完成,否则它就会失败)。
有没有办法告诉管理员决定等待登录解析?
感谢您提供的任何帮助/建议。
答案 0 :(得分:1)
如果您将第一个解析结果(在您的情况下为login
)注入第二个解析,那么该解析将被延迟,直到加载该值。如果未加载或出现错误,则不会触发:
$stateProvider.state('/admin/:one/:two/:three?', {
templateUrl: '/app/partials/admin.html',
controller: 'AdminCtrl',
resolve: {
login: function(LoginService) {
return LoginService.login();
},
admin: function($route, LoginService, login) { //here we injected login
return LoginService.admin($route.current.params.one, $route.current.params.two, $route.current.params.three);
}
}
});
编辑:更改了答案,目前我只知道这与$stateProvider
一起使用。