【发布时间】:2017-03-15 07:33:09
【问题描述】:
我记得听说过在从 DOM 中删除元素之前需要销毁它的作用域。但我不完全确定这是如何完成的。
所以,碰巧我有一个从 DOM 中删除元素的指令。精简版如下所示:
(function() {
angular.module('app').directive('remove', function() {
return {
restrict: 'A',
link: function(scope, element, attrs) {
element.children().remove();
element.remove();
}
}
}]);
}());
一个简单且不切实际的例子是这样的
<my-directive-with-isolated-scope remove></my-directive-with-isolated-scope>
我可以删除元素,但似乎范围没有被破坏,我相信这会造成内存泄漏,对吧?我还在指令的控制器(具有隔离范围的控制器)中设置了一个$interval,在那里我设置了一条控制台消息作为测试输出。而且我可以看到,当它从 DOM 中删除时,它仍然会在设置的时间间隔内注销一条控制台消息。
我是否需要修改上述指令中的某些内容才能正确删除元素?
【问题讨论】:
标签: javascript angularjs dom angularjs-directive angularjs-scope