如何在AngularJS$rootScope事件侦听器中应用状态转换

How do I apply state transition inside AngularJS $rootScope event listeners?

本文关键字:侦听器 应用 状态 转换 事件 rootScope AngularJS      更新时间:2023-10-25

我目前在使用angular http auth库时遇到了一个问题,该库正在处理从事件的状态转换:auth-loginRequired。我正在为我的路由系统使用angular ui路由器。

总之,这里有一些来自库的代码,它们会发出事件:

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');
});

我能够在控制台中获得"标记无效/过期"。然而,状态转换根本不起作用,我的控制台上也没有出现任何错误。我尝试过使用$location.path('/login'),但它也不起作用。

有人能帮我解决问题吗?任何形式的帮助都将不胜感激。谢谢

[更新-已解决]

对不起,我想我已经找到了解决方案,这并不是因为Angular事件中的转换不起作用。但我太愚蠢了,我自己也有一个事件。preventDefault()处理每当应用程序试图重定向到登录状态时(当应用程序捕捉到事件时,我试图重定向到该状态),如果浏览器的cookie中仍然有令牌的话。我对这个问题感到抱歉。

再次感谢你的帮助!