2012-09-07 8 views
9

Mi stavo chiedendo se c'è un modo per sapere se qualcuno sta cambiando il percorso dell'URL.

Per fare un esempio, ho qualcosa come questo nel mio html:

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

e mi ero utilizza questo:

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

Tuttavia, ho appena capito che ho bisogno di eseguire questo codice prima di cambiare l'URL. C'è un modo per questo e anche di avere lo stesso next e current per sapere dove sto andando essere reindirizzato e da dove?

risposta

24

C'è l'evento $routeChangeStart che viene generato prima del cambio di rotta. Supporta sia i parametri successivi che quelli correnti, esattamente come ci si aspetterebbe. Così, per coprire il tuo caso d'uso si potrebbe scrivere:

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

Ecco la jsFiddle completa che illustra questo in azione: http://jsfiddle.net/pkozlowski_opensource/9MnE9/

Si potrebbe anche voler controllare $ documentazione percorso (https://docs.angularjs.org/api/ngRoute/service/$route) per vedere altri eventi emesso dal servizio $ route.

+1

Grazie mille! questo è proprio quello che stavo cercando! – Tomarto

+2

Grazie. Ma il primo argomento è effettivamente l'evento. – bullgare