我不能让$ state.go()工作。 $ on(' $ stateChangeStart' ...);工作正常,并在尝试访问无法访问的受保护状态时打印控制台消息。但$ state.go(' toState.name,toParams');不工作。有谁知道如何实现这个目标?
任何帮助表示感谢
app.run(function ($rootScope,$state) {
$rootScope.$on('$stateChangeStart', function (event, toState, toParams) {
var requireLogin = toState.data.requireLogin;
$rootScope.currentUser = true;
if ($rootScope.currentUser === true && requireLogin === true) {
console.log(requireLogin);
console.log($rootScope.currentUser);
event.preventDefault();
$state.go(toState.name, toParams);
}
else {
console.log(requireLogin);
console.log($rootScope.currentUser);
$state.go('login.signin');
}
});
});

答案 0 :(得分:0)
当应该阻止重定向默认事件处理时,请记住切换到登录将是另一个状态转换。它应该被过滤掉,否则会导致无限循环
{
if(!toState.name != 'login.signin'){
console.log(requireLogin);
console.log($rootScope.currentUser);
event.preventDefault();
$state.go('login.signin');
}
}
$state.go(toState.name, toParams);
毫无意义,因为这是默认情况下会发生的事情