角度事件$ stateChangeStart未触发

时间:2015-07-31 14:54:42

标签: 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);
   });

}]);

因此,每当我更改路由,并从一个链接/控制器跳转到另一个链接/控制器时,没有任何反应,但是当我在各个控制器中添加控制台日志时,我确实看到了控制台日志语句。

我在这里做错了什么?我怎样才能调试这个,我不是很有经验的角色

更新

我想我正在使用ngRoute而不是ui-router

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

1 个答案:

答案 0 :(得分:0)

是的,你有来自$ route提供者的不同事件:$ routeChangeStart,$ routeChangeSuccess,$ routeChangeError

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

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