[英]On location change in Angular
有没有办法检测AngularJS中的全局位置变化,而不仅仅是单个控制器? 我的目标是检测每个位置的变化。 或者有没有有效的方法来观察window.location.href的变化?
$routeChangeSuccess
据我所知只是单控制器或我错了?
首先, $routeChangeSuccess
不限于单个控制器。 它是从$rootScope
广播的,这意味着它可以在每个范围(或从$rootScope
继承的每个范围)上被监听,但它是一个应用程序范围的事件。
还有一个未记录的事件与$routeChangeSuccess
类似,名为$locationChangeSuccess
。 不同之处在于前者在路由成功更改后触发,后者在URL更改但路由更改之前触发。 请注意,这不是所有URL更改,只是URL以AngularJS应用程序可以注册它的方式更改(例如,对$location.url()
的setter调用)。
为了澄清, $locationChangeSuccess
也是从$rootScope
广播的。
对于两者,您可以使用scope.$on('$routeChangeSuccess')
或scope.$on('$locationChangeSuccess')
来监听事件。
对于使用Angular-UI-Router的用户,此事件不会触发。 “$ stateChangeSuccess”是Angular-UI-Router的正确事件。 有关UI路由器事件的更多信息,请参阅此SO问题:
如何触发UI-Router View Load事件?
以及API指南:
https://github.com/angular-ui/ui-router/wiki#state-change-events
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.