在我的角度应用程序中,我有一个指令。如果我使用 DOM 操作(例如 jQuery empty())删除这个,则不会调用销毁事件:
myApp.directive('joe', function()
{
return {
restrict: 'E',
replace: true,
link: function(scope, element, attrs)
{
element.html("Hi !");
element.bind('$destroy', function()
{
console.log("Bye");
});
}
};
});
演示:http: //jsfiddle.net/ymx4N/
此外,如果我用 empty() 和 appendTo() 多次删除和添加这个指令,节点的数量总是会增加。这意味着所有指令总是在内存中,垃圾收集器永远不会删除这些节点。
也许这是一种“正常”行为,因为 AngularJS 无法知道我何时直接删除/更改 DOM 节点。但是,是否可以明确销毁指令?在没有这种“”“内存泄漏”“”的情况下,如何通过 DOM 操作添加和删除指令?
谢谢 !