【发布时间】:2016-02-02 13:39:06
【问题描述】:
在运行时向 dom 节点动态添加指令是不好的做法吗?
就像我的控制器里有:
if(...){ // some logic if I really want my directive here
$(element).attr("myDirectiveAsAttribute", "someVal");
}
问题是,我的指令将通过 ng-repeat 添加到多个 dom 节点(每页大约 20 个),我想保持它的性能,所以如果指令是,我不需要检查我的链接函数需要与否,但仅在需要时才真正链接指令。
【问题讨论】:
-
在控制器中做任何与 dom 相关的 jqLite 都是不好的做法
-
好吧,假设决定发生在另一个指令中
-
高性能是什么意思?您页面上的那 20 只手表没有表现吗?如果是这样,您可能需要仔细查看您插入的指令,然后查看页面上的观看次数。
-
这种方法行不通。如果向元素添加属性指令,则需要使用
$compile服务来调用该指令并将其链接到范围。如果您想在另一个指令中做出决定,ng-if指令会为您执行此操作,但请注意,ng-if添加了一个子作用域。 -
感谢有关 $compile 的提示。这样的解决方案怎么样? jsfiddle.net/ftfish/KyEr3
标签: angularjs optimization angularjs-directive