与AngularJS中的$ routeChangeSuccess相反

Tom*_*rto 9 routes angularjs angularjs-routing

我只是想知道是否有办法知道是否有人正在更改URL的路由.

举个例子,我在html中有这样的东西:

<a ng-href="#/somewhere">To somewhere</a>
Run Code Online (Sandbox Code Playgroud)

正在使用这个:

$scope.$on('$routeChangeSuccess', function (scope, next, current) {
    //Some code
})
Run Code Online (Sandbox Code Playgroud)

但是,我刚刚意识到我需要在更改URL之前运行此代码.有没有办法达到这个目的,并且也有相同的方法,nextcurrent知道我将在哪里重定向,从哪里来?

pko*_*rce 24

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

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

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

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

  • 谢谢.但第一个论点实际上就是事件. (2认同)