2013-08-20 64 views
10

Có cách nào để phát hiện các thay đổi vị trí toàn cầu trong AngularJS, không chỉ là bộ điều khiển đơn? Mục tiêu của tôi là phát hiện mọi thay đổi vị trí. Hoặc có cách nào hiệu quả để xem window.location.href để thay đổi không?Thay đổi vị trí trong Angular

$routeChangeSuccess 

Như tôi đã hiểu chỉ dành cho bộ điều khiển đơn hoặc tôi sai?

+2

Bạn có thể có một bộ điều khiển cơ sở mà bao gồm toàn bộ ứng dụng của bạn, và có điều khiển mà nghe cho Sự kiện routeChangeSuccess. –

Trả lời

23

Trước hết, $routeChangeSuccess không giới hạn ở một bộ điều khiển duy nhất. Nó được phát sóng từ $rootScope có nghĩa là nó có thể được nghe trên mọi phạm vi (hoặc, mọi phạm vi kế thừa từ $rootScope) nhưng là một sự kiện ứng dụng rộng.

Ngoài ra còn có một sự kiện không có giấy tờ hoạt động tương tự như $routeChangeSuccess được gọi là $locationChangeSuccess. Sự khác biệt là các đám cháy trước đây một khi một tuyến đường đã thay đổi thành công và sau đó cháy khi URL được thay đổi nhưng trước khi tuyến đường thay đổi. Lưu ý rằng đây không phải là tất cả thay đổi URL, chỉ cần lần URL thay đổi theo cách mà ứng dụng AngularJS có thể đăng ký nó (ví dụ: cuộc gọi setter đến $location.url()).

Chỉ cần làm rõ, $locationChangeSuccess cũng được phát từ $rootScope.

Đối với cả hai, bạn có thể nghe sự kiện bằng cách sử dụng scope.$on('$routeChangeSuccess') hoặc scope.$on('$locationChangeSuccess').

Các vấn đề liên quan