Angular 路由 - 等待上一个解析
Angular Routing - Wait for previous resolve
我有一条 angular 路线如下:
$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() 完成,否则它就会失败)。
有没有办法告诉管理员 resolve 等待登录 resolve?
感谢您提供的任何 help/advice。
如果您将第一个解析结果(在您的情况下为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
一起使用。
我有一条 angular 路线如下:
$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() 完成,否则它就会失败)。
有没有办法告诉管理员 resolve 等待登录 resolve?
感谢您提供的任何 help/advice。
如果您将第一个解析结果(在您的情况下为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
一起使用。