我正在尝试将页面重定向到主页,如果用户没有访问权限但看起来像$ location.path('/')和$ state.go('main')都不起作用。需要帮助来解决这个问题。有什么想法吗?
angular.module('app').config(function($stateProvider, $urlRouterProvider, $locationProvider){
$urlRouterProvider.otherwise('/');
$stateProvider
.state('main', {
url: '/',
templateUrl: 'partials/main/main',
controller: 'fegMainCtrl'
})
.state('user-admin', {
url: '/admin/users',
templateUrl: 'partials/admin/user-list',
controller: 'fegUserListCtrl',
resolve: {
auth: function(fegIdentity, $q) {
if(fegIdentity.currentUser && fegIdentity.currentUser.roles.indexOf('admin') > -1) {
return true;
}else {
return $q.reject('not authorized');
}
}
}
});
$locationProvider.html5Mode(true);
});
angular.module('app').run(function($rootScope, $location) {
$rootScope.$on('$stateChangeError', function(event, current, previous, rejection) {
if(rejection === 'not authorized'){
$rootScope.$apply(function(){
$location.path('/');
});
}
})
});
答案 0 :(得分:0)
我的解决方案是用 $ state.go('state.name')替换 $ location.path('/ state / url')。
在你的情况下(注意$ stateChangeError参数):
$rootScope.$on( "$stateChangeError", function( event, toState, toParams, fromState, fromParams, rejection){
if( rejection === 'not authorized' ){
return $state.go( 'main' );
}
});