2012-09-07 17 views
9

Me preguntaba si hay alguna manera de saber si alguien está cambiando la ruta de la URL.

A modo de ejemplo, tengo algo como esto en mi html:

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

y yo estaba usando esto:

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

Sin embargo, me acabo de dar cuenta de que necesito para ejecutar este código antes de cambiar la URL. ¿Hay alguna manera de hacerlo y también tener el mismo next y current para saber dónde voy a redireccionar y de dónde?

Respuesta

24

Existe el evento $routeChangeStart que se dispara antes del cambio de ruta. Admite parámetros próximos y actuales, exactamente como cabría esperar. Por lo tanto, para cubrir su caso de uso podría escribir:

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

Aquí es el jsFiddle completa ilustrar esto en acción: http://jsfiddle.net/pkozlowski_opensource/9MnE9/

Es posible que también desee comprobar $ documentación ruta (https://docs.angularjs.org/api/ngRoute/service/$route) para ver otros eventos emitido por el servicio $ route.

+1

¡Muchas gracias! esto es justo lo que estaba buscando! – Tomarto

+2

Gracias. Pero el primer argumento es un evento en realidad. – bullgare