如何观察AngularJS中的路线变化?

2022-08-30 01:10:35

如何观察/触发路线变更事件?


答案 1

注意:这是旧版AngularJS的正确答案。有关更新的版本,请参阅此问题

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

以下事件也可用(它们的回调函数采用不同的参数):

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

请参阅$route文档。

还有另外两个未记录的事件:

  • $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     
    });
});