如何在AngularJS$rootScope事件侦听器中应用状态转换
How do I apply state transition inside AngularJS $rootScope event listeners?
我目前在使用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中仍然有令牌的话。我对这个问题感到抱歉。
再次感谢你的帮助!
相关文章:
- Highslide(iframe的侦听器)
- 如何在for循环中添加事件侦听器
- 选项卡侦听器未被来自后台脚本的消息激活
- 事件侦听器,用于完全关闭后重新启动的应用程序
- 如何在AngularJS$rootScope事件侦听器中应用状态转换
- 在 Angular 指令中,如何在删除事件后重新应用事件侦听器
- 仅将侦听器应用于具有 AJAX 无限滚动的新项
- jQuery将侦听器应用于元素集
- 离子事件侦听器在每个屏幕上触发,只想应用于一个控制器
- 带有socket.io的单页应用程序中的特定部分侦听器
- Meteor应用程序中PayPal的IPN侦听器
- 初始化Angular应用程序后立即注册事件侦听器
- jQuery事件侦听器在应用选择器之前启动
- 将事件侦听器添加到城域网样式的网格应用程序中
- 在循环内部应用mouseover事件侦听器
- PhoneGap应用程序- deviceready"事件侦听器未被调用
- 如何将一个事件侦听器应用于另一个事件侦听器
- 在chrome应用程序示例中添加窗口状态(最大值、最小值等)侦听器
- 将jQuery侦听器应用于元素'的孩子
- 为什么我的自定义类不应用于主体时,通过jQuery添加它与gmap事件单击侦听器