销毁$ destroy事件中的范围

时间:2017-01-24 15:35:45

标签: javascript angularjs

在我正在处理的项目中找到此代码之一的指令:

element.on('$destroy', function () {
    scope.$destroy();
});

是否需要此代码?或者我可以删除它吗?当指令被销毁时,范围是否被销毁?

2 个答案:

答案 0 :(得分:1)

除非你确定它的目的,否则保留它,["flag_sum"]实际上将范围从其父范围中移除,下面是官方文档的摘录

  

$破坏();   从父作用域中删除当前作用域(及其所有子作用域)。删除意味着对$ digest()的调用将不再传播到当前范围及其子节点。删除还意味着当前范围符合垃圾收集的条件。

另请查看此SO Thread以获取示例和详细说明。

答案 1 :(得分:1)

您不必编写此代码。

根据文档,$destroy事件会在两种情况下触发。

  • 在范围被销毁之前
  • 在从DOM中删除元素之前

作为旁注,您仍然可以使用scope事件中的元素的element.on('$destroy') 范围将被销毁:

element.on('$destroy', function() {
    console.log('RIP', scope);
});