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

时间:2016-03-31 07:43:13

标签: javascript angularjs angular-ui-router angular-http-auth

我目前在使用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');
});

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

有人可以帮我解决这个问题吗?任何形式的帮助都非常感谢。谢谢!

1 个答案:

答案 0 :(得分:0)

[更新 - 已解决]

抱歉,我认为我找到了解决方案它不是因为转换在Angular活动中无效,但是我太愚蠢了,以至于我自己有一个event.preventDefault()处理,只要应用程序试图重定向到登录状态(我试图在应用程序捕获事件时重定向),如果还有一个令牌,那么浏览器的cookie。我很抱歉这个问题。

再次感谢您试图帮助我!