[英]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.