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

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

我目前在为我的路由系统使用 angular-http-auth library which is handling a state transition from events of event:auth-loginRequired. I am using 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 Invalid / Expired'。但是,状态转换根本不起作用,我的控制台上也没有出现任何错误。我试过使用 $location.path('/login'),但它也不起作用。

谁能帮我解决问题?非常感谢任何形式的帮助。谢谢!

[更新 - 已解决]

抱歉,我想我找到了解决方案不是因为过渡在Angular事件中不起作用,但我太蠢了,我自己有一个 event.preventDefault() 处理,每当应用程序试图重定向到登录状态(我试图在应用程序捕获事件时重定向),如果仍然有一个令牌在浏览器的 cookie 中。我很抱歉这个问题。

再次感谢您的帮助!