关于角度的位置变化

时间:2013-08-20 01:01:27

标签: javascript angularjs location href

有没有办法检测AngularJS中的全局位置变化,而不仅仅是单个控制器?我的目标是检测每个位置的变化。 或者有没有有效的方法来观察window.location.href的更改?

$routeChangeSuccess 

据我所知只是单控制器或我错了吗?

2 个答案:

答案 0 :(得分:24)

首先,$routeChangeSuccess不限于单个控制器。它是从$rootScope广播的,这意味着它可以在每个范围(或者,从$rootScope继承的每个范围)上被监听,但是是一个应用程序范围的事件。

还有一个未记录的事件与名为$routeChangeSuccess的{​​{1}}类似。不同之处在于前者在路由成功更改后触发,后者在URL更改但路由更改之前触发。请注意,这不是所有URL更改,只是URL以AngularJS应用程序可以注册它的方式更改(例如,对$locationChangeSuccess的setter调用)。

为了澄清,$location.url()也是从$locationChangeSuccess广播的。

对于这两种情况,您可以使用$rootScopescope.$on('$routeChangeSuccess')来收听活动。

答案 1 :(得分:1)

对于使用Angular-UI-Router的用户,此事件不会触发。 “$ stateChangeSuccess”是Angular-UI-Router的正确事件。有关UI路由器事件的更多信息,请参阅此SO问题:
How to trigger UI-Router View Load events?
以及API指南:
https://github.com/angular-ui/ui-router/wiki#state-change-events

相关问题