角度指令处理

时间:2017-09-25 07:36:58

标签: javascript angularjs angularjs-directive

我试图找出在不同角度指令上执行清理的最佳方法。

我有不同类型的指令,有些没有定义自己的范围,有些具有独立的范围,有些具有子范围。

我需要一个通用机制来处理我的指令使用的单独组件中的清理。

所以我基本上看了两个不同的选项,要么注册角度element.on('$destroy', function() {...}),要么注册jquery' scope.$on('$destroy', function () {...})

问题在于: 如果我在基础元素破坏上注册,那么我会错过指令的破坏,他们的元素没有被破坏(不确定那可能是怎样的,通过测试注意到它......)。 如果我在基础范围破坏上注册,那么(我认为)我会错过销毁他们的元素被破坏的指令,例如当指令没有定义自己的范围并使用其父范围时。

看看角度指令文档,我发现了这个:

  

最佳实践:指令应该自行清理。您可以使用element.on(' $ destroy',...)或范围。$ on(' $ destroy',...)来运行清理功能指令被删除。

在我所知道的时候,没有提及使用哪种策略。

另外,看看Angular的文档,我发现了这个:

  

当不再需要子范围时,子范围创建者有责任通过范围销毁它们。$ destroy()API。

我不理解我应该调用范围的场景。$ destroy()我自己的API。

0 个答案:

没有答案