У меня есть одностраничное приложение, созданное в angularjs, с использованием UI-Router и вложенных представлений. Мой код выглядит следующим образом:Угловой UI-маршрутизатор, разрешающий вложенные виды
app.config(['$stateProvider', '$urlRouterProvider', '$httpProvider' ,'$mdDateLocaleProvider', '$locationProvider', function ($stateProvider, $urlRouterProvider, $httpProvider, $mdDateLocaleProvider, $locationProvider) {
var rootpath = config.paths.components;
$stateProvider.state('home', {
url: '/',
views: {
index: {
templateUrl: rootpath + '_root/template.html',
controller: "RootController"
},
"[email protected]": {
templateUrl: rootpath + 'header/header-template.html',
controller: "HeaderController"
},
"[email protected]": {
templateUrl: rootpath + 'sidebar/sidebar-template.html',
controller: "SidebarController"
},
"[email protected]": {
templateUrl: rootpath + 'main/main-template.html',
controller: "MainController"
}
},
resolve: {
authorize: ['RootService', function (RootService) {
var auth = RootService.getKey();
return RootService.getConfig(auth.key);
}]
},
});
$urlRouterProvider.otherwise('/');
}]).run(['$rootScope', '$state', '$window', function($rootScope, $state, $window){
$rootScope.$on('$stateChangeError', function(event, toState, toParams, fromState, fromParams, error){
$window.location = error.status +'.html';
});
В «домашнем» состоянии, я делаю решимость, чтобы увидеть, если ключ аутентификации передается в действителен.
Если ключ недействителен или истек, событие $stateChangeError
вызывает ошибку и перенаправляет пользователя на страницу с ошибкой.
Это нормально работает, когда приложение запускается и обновляется.
Проблема в том, когда срок действия ключа истек (действует только в течение десяти минут), и приложение не передислоцировано, событие $stateChangeError
не обнаруживает сообщение об ошибке.
Любые мысли о том, как исправить это?
везде, где в вас коде, где вы утрачиваете ключ там себя вы можете попытаться перенаправить страницу, как $ window.location = error.status +. HTML «; – atul