javascript - AngularJs 事件 $stateChangeStart 未触发

标签 javascript angularjs

我正在尝试为用户实现基于路由的安全性,但 stateChangeStart 没有触发,这是我的代码:

app.run(['$rootScope', '$location', function($rootScope, $location) {
    $rootScope.$on('$stateChangeStart',function(event, toState, toParams, fromState, fromParams){
      console.log('$stateChangeStart to '+toState.to+'- fired when the transition begins. toState,toParams : \n',toState, toParams);
   });

}]);

因此,每当我更改路线并从一个链接/ Controller 跳转到另一个链接/ Controller 时,什么也不会发生,但是当我在各个 Controller 中添加控制台日志时,我确实会看到控制台日志语句。

我在这里做错了什么?我该如何调试这个,我在 Angular 方面不是很有经验

更新

我想我使用的是 ngRoute 而不是 ui-router

是否有与 ngRoute 等效的东西,我可以在根范围内获得状态更改。为此目的,迁移到 ui-router 似乎是一个很大的改变

最佳答案

是的,您有与 $route 提供者不同的事件:$routeChangeStart、$routeChangeSuccess、$routeChangeError

$rootScope.$on('$routeChangeStart', function(event, next, current) {
    // TODO
});

文档:https://docs.angularjs.org/api/ngRoute/service/ $路线

关于javascript - AngularJs 事件 $stateChangeStart 未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31749217/

相关文章:

javascript - 正则表达式用于验证给定字符串中至少 n 个大写字母、小写字母、数字和特殊字符

javascript - 在运行时在 Javascript 、 jQuery 中为图像标签指定新源

javascript - 如何从 ng-table 中定义过滤框?

javascript - 从 3rd 方库异步回调更新 AngularJS 范围

javascript - 使用 appendTo() 和 switch 将变量中的内容添加到 div

javascript - 获取函数内部异步函数的返回数据

java - AngularJs 通过 Maven 和 Jersey 与 Eclipse 集成

angularjs - 在 angularjs 中有条件地引导应用程序

javascript - 将数据从 Controller 发送到js函数

JavaScript:Date 的 toString() 和 toLocaleString() 方法之间的区别