如何看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(); });