我目前在使用 angular-http-auth 时遇到问题处理来自 event:auth-loginRequired 事件的状态转换的库。我正在使用angular-ui-router对于我的路由系统。
无论如何,这里是库中发出事件的一些代码:
case 401:
var deferred = $q.defer();
httpBuffer.append(config, deferred);
$rootScope.$broadcast('event:auth-loginRequired', rejection);
return deferred.promise;
我正在使用 myApp.run 中的这些代码来捕获事件
$rootScope.$on('event:auth-loginRequired', function(){
console.log('Token Invalid / Expired');
$state.transitionTo('login');
});
我能够在控制台中获取“ token 无效/过期”。然而,状态转换根本不起作用,我的控制台上也没有收到任何错误。我尝试过使用 $location.path('/login'),但它也不起作用。
有人可以帮我解决问题吗?非常感谢任何形式的帮助。谢谢!
最佳答案
[更新 - 已解决]
抱歉,我想我已经找到了解决方案,这不是因为转换在 Angular 事件中不起作用,而是我自己太愚蠢了如果浏览器的 cookie 中仍然有 token ,则每当应用程序尝试重定向到登录状态(我试图在应用程序捕获事件时重定向)时,都会有一个 event.preventDefault() 处理。我很抱歉问这个问题。
再次感谢您对我的帮助!
关于javascript - 如何在 AngularJS $rootScope 事件监听器中应用状态转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36327144/