与AngularJS中的$ routeChangeSuccess相反

时间:2012-09-07 15:34:23

标签: angularjs routes angularjs-routing

我只是想知道是否有办法知道某人是否正在更改网址的路线。

作为一个例子,我在html中有这样的东西:

<a ng-href="#/somewhere">To somewhere</a>

使用此:

$scope.$on('$routeChangeSuccess', function (scope, next, current) {
    //Some code
})

但是,我刚刚意识到我需要在更改URL之前运行此代码。有没有办法解决这个问题,并且有同样的nextcurrent知道我将在何处重定向以及从何处重定向?

1 个答案:

答案 0 :(得分:24)

在路由更改之前会触发$routeChangeStart事件。它支持下一个和当前参数,完全像您期望的那样。所以,为了覆盖你的用例你可以写:

$scope.$on('$routeChangeStart', function(scope, next, current){
        console.log('Changing from '+angular.toJson(current)+' to '+angular.toJson(next));
});

以下是完整的jsFiddle,说明了这一点:http://jsfiddle.net/pkozlowski_opensource/9MnE9/

您可能还想检查$ route文档(https://docs.angularjs.org/api/ngRoute/service/$route)以查看$ route服务发出的其他事件。