从Angular 1.2.x迁移到1.3.x或1.4.x.

时间:2015-05-26 08:29:47

标签: javascript angularjs angular-routing

我有代码

$rootScope.$on('$routeChangeStart', function(event){
      User.refresh();

      if(!User.isLoggedIn()){
        event.preventDefault();
        $location.path('/sign_in');
      } else {
        if($location.path() == "/sign_in"){
          $location.path("/");
        };
      };
    });

我更改了"angular-route": "~1.4.0",,然后$ location.path('/ sign_in')无效。如果我评论event.preventDefault();,这样可以正常工作。当我使用~1.3.0时,情况就是这样。谁能告诉我我做错了什么?

1 个答案:

答案 0 :(得分:0)

我遇到同样的问题并在这里找到了答案:

https://github.com/angular/angular.js/pull/9678

https://github.com/angular/angular.js/issues/9607

在版本1.3和1.4上使用$ location.path('/ sign_in')进行角度调用$ routeChangeStart事件。

所以你得到一个无限循环。如果你使用event.preventDefault();这个循环中断了。