【问题标题】:Is it bad practice to add directives dynamically at runtime?在运行时动态添加指令是不好的做法吗?
【发布时间】: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 相关的 jqLit​​e 都是不好的做法
  • 好吧,假设决定发生在另一个指令中
  • 高性能是什么意思?您页面上的那 20 只手表没有表现吗?如果是这样,您可能需要仔细查看您插入的指令,然后查看页面上的观看次数。
  • 这种方法行不通。如果向元素添加属性指令,则需要使用$compile 服务来调用该指令并将其链接到范围。如果您想在另一个指令中做出决定,ng-if 指令会为您执行此操作,但请注意,ng-if 添加了一个子作用域。
  • 感谢有关 $compile 的提示。这样的解决方案怎么样? jsfiddle.net/ftfish/KyEr3

标签: angularjs optimization angularjs-directive


【解决方案1】:

解决方案是 ng-attr-my-directive

当指令是“my-directive”时,可以这样使用它:

<div ng-attr-my-directive="myVal == 'myCondition'"></div>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-22
    • 2011-02-14
    • 2011-07-07
    • 2015-10-11
    相关资源
    最近更新 更多