2014-09-19 15 views
6

tôi thấy loại mã rất nhiều trong module gócKhi nào thì một phạm vi tự nhiên bị phá hủy trong angularjs vòng đời

scope.$on('$destroy', function(){ 
    //undind listener here 
}); 

sự hiểu biết của tôi là bất cứ khi nào phạm vi sắp bị hủy diệt nó phát sóng một sự kiện $destroy cho phép bạn để làm sạch bất kỳ mã nào có thể tiếp tục chạy sau khi hủy phạm vi sẽ tạo rò rỉ bộ nhớ.

Câu hỏi của tôi là, khi phạm vi tự nhiên bị hủy trong ứng dụng góc cạnh. Tất cả các tài liệu tôi có thể tìm thấy từ trang web là bạn có thể tự gọi $destroy để loại bỏ một phạm vi, nhưng điều này dường như cho thấy rằng nó sẽ xảy ra tại một số điểm tự động. Khi nào vậy?

+2

Khi bạn thay đổi tuyến đường/khẳng định các $ phạm vi điều khiển trước đó bị phá hủy tự động. –

+0

Có lần nào khác không? – richbai90

+0

Đúng. Như đã thấy trong [tài liệu góc] (https://docs.angularjs.org/api/ng/type/$rootScope.Scope#$destroy) sự kiện này có thể được gọi bởi bất kỳ cá thể phạm vi nào, ví dụ như phạm vi chỉ thị. – meriadec

Trả lời

0

Phạm vi được gắn với các phần tử HTML trong quá trình biên dịch. $ compile cần một phạm vi để biên dịch một phần tử. Các yếu tố có thể được lồng vào nhau. Một số có được phạm vi mới kế thừa khác.

Phạm vi bị hủy khi các yếu tố bị xóa khỏi DOM.

Để biết chính xác: Trình xử lý $destroy được gọi trên jQuery.cleanData mà AngularJS xác định lại và gọi sau khi thực hiện xóa - còn hoạt động trong việc hủy phạm vi.

cleanData chức năng được gọi khi phần tử bị xóa khỏi DOM.

What is the purpose of jQuery clean and cleanData methods?

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