在我的主模块run
方法中,我的代码如下:
$rootScope.$on('$stateChangeStart', function(event, toState, toParams) {
if (toState.data && toState.data.access && !Authentication.authorize(toState.data.access, toState, toParams)) {
event.preventDefault();
$modal.open({
templateUrl: 'components/security/login.html',
controller: 'LoginCtrl as ctrl',
backdrop: 'static',
keyboard: false,
size: 'sm',
resolve: {
reason: function() {
return false;
}
}
});
}
});
基本上,当您导航到状态并且未经过身份验证时,会弹出一个模态窗口(从API收到401时会发生同样的情况)。
在登录模式中是指向注册表单的链接。除了这些步骤外,一切正常:
event.preventDefault()
并弹出模式。所以问题当然是event.preventDefault()
根本不会改变状态,因为没有依赖于登录用户的代码运行。但我真正需要的是它进入状态但实际上并没有执行它,如果这是有道理的。然后按后退按钮只会返回主页,登录模式会再次弹出。然后,当您登录时,您处于正确的状态(主页)。