2012-09-07 20 views
9

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

举个例子,我有这样的事情在我的html:

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

,我使用,这是

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

然而,我才意识到,我需要运行这个代码在更改URL之前。有没有办法做到这一点,也有相同的nextcurrent知道我将在哪里重定向和从哪里?

回答

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/

您可能还需要检查$路线文档(https://docs.angularjs.org/api/ngRoute/service/$route)看其他事件由$ route服务命名。

+1

非常感谢!这正是我正在寻找的! – Tomarto

+2

谢谢。 但第一个参数实际上是事件。 – bullgare