我見過很多指令的例子,包括那些AngularUI team,他們似乎沒有做任何清理。
下面是他們的ui-date指令創建jQuery datepicker的一個例子。 (source)
element.on('blur', function() { ... });
它們放置在元素上的事件處理程序,但在任何時候,做他們曾經取消綁定事件。我會期待有這樣的代碼,如:
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
});
所以這讓我想知道是否有什麼我不明白。他們在做什麼導致內存泄漏的情況下,元素w /該指令被反覆創建和銷燬?
我錯過了什麼?
一個非常有用的答案類似的問題:HTTP:/ /stackoverflow.com/questions/26983696/angularjs-does-destroy-remove-event-listeners – hgoebl