我已经读过,角度中的DOM操作应该在指令的编译函数中完成,而不是在pre-link / post-link / controller中。编译函数无权访问范围。
我的问题是我想做依赖于范围变量的DOM操作。例如,我有一个列表,我将其传递给指令。在指令中,我正在创建一个自定义选择,其中包含列表项。在这种情况下,操作DOM的正确位置在哪里?
请注意,我没有使用ng-repeat - 当列表变大时我发现它很慢。
答案 0 :(得分:2)
我不知道你在哪里阅读“角度中的DOM操作应该在指令的编译函数中完成”。这与AngularJS团队的建议相矛盾。
创建操纵DOM的指令
想要修改DOM的指令通常使用
link
选项来注册DOM侦听器以及更新DOM。
内置指令ng-repeat
,ng-if
,ng-when
等都在link
函数中进行DOM操作。
编译
编译函数处理转换模板DOM。由于大多数指令不进行模板转换,因此不经常使用它。