Tôi đã nhìn thấy rất nhiều ví dụ chỉ thị bao gồm những ví dụ của AngularUI team nơi chúng không có vẻ như làm bất kỳ việc dọn dẹp nào.
Đây là một ví dụ từ chỉ thị ngày tháng của chúng, tạo ra một bộ đếm ngày tháng jQuery. (source)
element.on('blur', function() { ... });
Họ đặt một trình xử lý sự kiện trên phần tử, nhưng tại không có điểm nào để họ bao giờ unbind sự kiện này. Tôi đã dự kiến sẽ có mã hiện tại như:
var namespace = ".uiDate";
element.on('blur' + namespace, function() { ... });
element.on("$destroy" + namespace, function()
{
element.datepicker("destroy"); //Destroy datepicker widget
element.off(namespace); //Unbind events from this namespace
});
Vì vậy, điều này làm tôi tự hỏi nếu có điều gì đó tôi không hiểu. Không phải những gì họ đang làm gây ra một rò rỉ bộ nhớ trong các tình huống mà các yếu tố w/chỉ thị này được tạo ra và bị phá hủy hơn và hơn?
Tôi đang thiếu gì?
Một câu hỏi tương tự với một câu trả lời rất hữu ích: http://stackoverflow.com/questions/26983696/angularjs-does-destroy-remove-event-listeners – hgoebl