Как можно наблюдать/запускать событие при изменении маршрута?
Как следить за изменением маршрута в AngularJS?
Ответ 1
Примечание. Это правильный ответ для устаревшей версии AngularJS. См. этот вопрос для обновленных версий.
$scope.$on('$routeChangeStart', function($event, next, current) {
// ... you could trigger something here ...
});
Также доступны следующие события (их функции обратного вызова принимают разные аргументы):
- $routeChangeSuccess
- $routeChangeError
- $routeUpdate - если свойство reloadOnSearch установлено в false
Смотрите $route docs.
Есть еще два события undocumented:
- $locationChangeStart
- $locationChangeSuccess
См. В чем разница между $locationChangeSuccess и $locationChangeStart?
Ответ 2
Если вы не хотите размещать часы внутри определенного контроллера, вы можете добавить часы для всего приложения в Angular app run()
var myApp = angular.module('myApp', []);
myApp.run(function($rootScope) {
$rootScope.$on("$locationChangeStart", function(event, next, current) {
// handle route changes
});
});
Ответ 3
$rootScope.$on( "$routeChangeStart", function(event, next, current) {
//..do something
//event.stopPropagation(); //if you don't want event to bubble up
});
Ответ 4
$rootScope.$on( "$routeChangeStart", function(event, next, current) {
//if you want to interrupt going to another location.
event.preventDefault(); });