我有一個使用UI-Router和嵌套視圖構建在angularjs中的單頁面應用程序。我的代碼如下所示:Angular 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';
});
在「home」狀態中,我正在做一個解析,以查看傳入的身份驗證密鑰是否有效。
如果密鑰無效或已過期,$stateChangeError
事件捕獲錯誤並將用戶重定向到錯誤頁面。
這適用於應用程序啓動和刷新時的正常工作。
問題是,如果密鑰已過期(僅適用於十分鐘)且應用程序未重新編碼,則事件不會收到錯誤消息。
有關如何解決這個問題的任何想法?
無論在你的代碼,你在哪裏存在本身無效的鍵,你可以嘗試將網頁重定向爲$ window.location的= error.status +」。HTML 「; – atul