角度指令DOM操作依赖于范围变量

时间:2016-05-10 08:07:27

标签: angularjs angular-directive

我已经读过,角度中的DOM操作应该在指令的编译函数中完成,而不是在pre-link / post-link / controller中。编译函数无权访问范围。

我的问题是我想做依赖于范围变量的DOM操作。例如,我有一个列表,我将其传递给指令。在指令中,我正在创建一个自定义选择,其中包含列表项。在这种情况下,操作DOM的正确位置在哪里?

请注意,我没有使用ng-repeat - 当列表变大时我发现它很慢。

1 个答案:

答案 0 :(得分:2)

我不知道你在哪里阅读“角度中的DOM操作应该在指令的编译函数中完成”。这与AngularJS团队的建议相矛盾。

  

创建操纵DOM的指令

     

想要修改DOM的指令通常使用link选项来注册DOM侦听器以及更新DOM。

     

- AngularJS Developer Guide - Directives - DOM Manipulation

内置指令ng-repeatng-ifng-when等都在link函数中进行DOM操作。

  

编译

     

编译函数处理转换模板DOM。由于大多数指令不进行模板转换,因此不经常使用它。

     

- AngularJS $compile Service API Reference -- compile