Угловая маршрутизация - ожидание предыдущего разрешения
У меня есть угловой маршрут, как показано ниже:
$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() вызывает sureAuthenticated, для завершения которого требуется LoginService.login(), иначе это просто не удается).
Есть ли способ сообщить администратору, что он должен дождаться разрешения входа в систему?
Спасибо за любую помощь / совет, который вы можете предоставить.
1 ответ
Решение
Если вы введете первый результат разрешения (login
в вашем случае) до 2-го разрешения, то это разрешение будет отложено до загрузки этого значения. Если он не загружен или есть ошибка, он не сработает:
$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
,