如果我把notify设置为true,则不会渲染login.html,是一个空白页面。如果我设置为 false,但返回会在控制台中呈现几个错误:
RangeError: Maximum call stack size exceeded
at $.resolve (angular-ui-router.min.js:1)
at b (angular-ui-router.min.js:1)
at Object.x.transitionTo (angular-ui-router.min.js:1)
at Object.x.go (angular-ui-router.min.js:1)
at app.js:317
at p.$broadcast (angular.min.js:3)
at Object.x.transitionTo (angular-ui-router.min.js:1)
at Object.x.go (angular-ui-router.min.js:1)
at app.js:317
at p.$broadcast (angular.min.js:3)
我的代码路由器:
$rootScope.$on('$stateChangeStart',
function(event, toState, toParams, fromState, fromParams) {
var shouldLogin = !$window.sessionStorage.token && !AuthenticationService.isLogged;
$rootScope.Authenticated = shouldLogin;
//redirect only if both isAuthenticated is false and no token is set
// if (!AuthenticationService.isLogged && !$window.sessionStorage.token) {
// $state.go('login');
// }
//console.log($rootScope.Authenticated);
if(shouldLogin) {
$state.go('login', {}, {notify: false, location: false});
event.preventDefault();
return;
}
});
最佳答案
我想说,你可以按照自己的方式行事,只需...添加一行以在已经登录时不重定向:
$rootScope.$on('$stateChangeStart',
function(event, toState, toParams, fromState, fromParams) {
var alreadyGoingToLogin = toState.name === "login";
if(alreadyGoingToLogin) {
return
}
...
通过工作示例检查这些内容:
关于javascript - Auth 时有关 Angular ui-router 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33528641/