我见过很多指令的例子,包括那些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