我在角度应用中遇到了问题,我在其中集成了ng-admin以提供简单的管理面板。我还集成了身份验证,并希望在没有当前会话时指向登录状态。
Ng-admin本身设置ui-router的方法直接指向仪表板。
即使设置我自己的$urlRouterProvider.otherwise(...)
我也无法强迫ui-router使用我的其他功能。
我试过这样:
$urlRouterProvider.otherwise(function ($injector) {
console.log('Hello World?!');
state.go('login');
});
但是从不打印console.log ......
我希望在运行任何仪表板代码之前拦截状态转换到仪表板,并首先将用户重定向到登录页面。
非常感谢任何提示和想法。
答案 0 :(得分:0)
感谢@ user8175473指出我正确的方向。
我使用$on('$stateChangeStart)
解决了问题,因为在执行某些状态代码后会调用$on('$stateChangeSuccess)
。
$rootScope.$on('$stateChangeStart', function(event, toState) {
if(toState.name !== 'login' && !service.isLoggedIn()) {
event.preventDefault();
$state.go('login');
}
});
请注意,完全取消状态转换需要event.preventDefault()
。