Làm cách nào để ngừng xem $ trong AngularJS?


77

Tôi có thể thiết lập $ watch trên phạm vi AngularJS để được thông báo khi biểu thức tôi quan tâm thay đổi. Nhưng làm thế nào để ngừng xem một khi tôi mất hứng thú?

Câu trả lời:


144

Khi gọi $watchmột hàm được trả về mà hủy đăng ký biểu thức bị ràng buộc.

Ví dụ: để xem một biến foochỉ thay đổi một lần:

var unregister = $scope.$watch('foo', function () {
  // Do something interesting here ...
  unregister();
});

Hy vọng điều đó sẽ giúp :-)


14
Chỉ cần nói rõ: trong ví dụ trên, lệnh gọi lại 'hủy đăng ký' đang được gọi từ bên trong chính hàm watch. Điều này không nhất thiết phải xảy ra và mã ở nơi khác trong ứng dụng (tức là bên ngoài chức năng đồng hồ) có thể vui vẻ gọi nó để đảm bảo chức năng đồng hồ không bao giờ được gọi lại.
decates

15
Một lưu ý khác: Khi bạn đăng ký một chiếc đồng hồ, nó sẽ được chạy một lần ngay lập tức và sau đó một lần nữa mỗi khi giá trị thay đổi. Vì vậy, mã chính xác ở trên sẽ chạy hàm watcher-function một lần và sau đó hủy đăng ký nó trước khi nó phản ứng với bất kỳ thay đổi nào foo. Một chút lạc đề, nhưng tôi thấy nó đáng để đề cập.
MW.

21

Là một bình luận bổ sung, nhưng không phải là câu trả lời - đây cũng là nguyên tắc tương tự để giết người nghe sự kiện.

var unregister = $rootScope.$on("listen-for-something-cool", function($event, params) {
   //Do cool stuff with params, then kill it
   unregister();
};

Chỉ là một bổ sung mà tôi nghĩ sẽ rất thú vị cho bất kỳ ai khác biết ...

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.