如何看AngularJS的路线变化?

如何在路线变化上观察/触发事件?

注意 :这是适用于旧版AngularJS的正确答案。 看到这个问题的更新版本。

$scope.$on('$routeChangeStart', function($event, next, current) { // ... you could trigger something here ... }); 

以下事件也是可用的(它们的callback函数有不同的参数):

  • $ routeChangeSuccess
  • $ routeChangeError
  • $ routeUpdate – 如果reloadOnSearch属性设置为false

查看$ route文档。

还有两件没有logging的事件:

  • $ locationChangeStart
  • $ locationChangeSuccess

查看$ locationChangeSuccess和$ locationChangeStart之间有什么区别?

如果你不想把手表放在一个特定的控制器中,你可以在Angular app run()添加整个应用程序的手表,

 var myApp = angular.module('myApp', []); myApp.run(function($rootScope) { $rootScope.$on("$locationChangeStart", function(event, next, current) { // handle route changes }); }); 
 $rootScope.$on( "$routeChangeStart", function(event, next, current) { //..do something //event.stopPropagation(); //if you don't want event to bubble up }); 
 $rootScope.$on( "$routeChangeStart", function(event, next, current) { //if you want to interrupt going to another location. event.preventDefault(); });