【问题标题】:AngularJS - Conditionally apply an attribute?AngularJS - 有条件地应用属性?
【发布时间】:2013-03-11 01:50:01
【问题描述】:

有条件地应用一个元素很容易 - 只需使用 ng-show。但是属性呢?

IE

<div ui-sortable>
  ...
</div> 

只需要对管理员进行排序,所以请执行类似...

<div ng-conditional-attribute=" {'ui-sortable': 'user.isAdmin()'} ">
  ...
</div>

【问题讨论】:

    标签: angularjs angular-ui


    【解决方案1】:

    创建自定义指令或模板,并在附加可排序的版本和不附加排序的版本之间切换。

    【讨论】:

    • 这绝对是一个很好的解决方案。但是为了 DRY 的利益,寻找使用更少代码的东西。
    • 无论您采取什么路线,您基本上都必须编写一个新指令。您可以只在 2 个变体上使用 ui-if,但仍会重复子 DOM。创建自定义指令并有条件地添加属性。如果优先级高于可排序它应该工作正常
    • 好的。这还不错。谢谢。
    • @ProLoser 你介意举个例子吗?如果admin 是真的,我也想拥有&lt;div ui-sortable="sortableOptions"&gt;,如果不是,我也想拥有&lt;div&gt;。你会如何写一个指令来做到这一点?
    • 有人对此有更新的解决方案吗?挠我的头!!
    【解决方案2】:

    由于很多指令也可以在 class 中使用,您或许可以使用 ng-class="{'ui-sortable': user.isAdmin()}"

    我对@9​​87654323@ 指令了解得不够多,不知道它们有什么限制

    【讨论】:

    • 你知道吗,这是一个有趣的想法,我没有想到。我没有真正的理由认为这些限制应该阻止在课堂上使用。它可能值得测试。
    • 经过思考(以及更多测试)后,我意识到这行不通。所有指令的位置在编译时被缓存,由于这个类在编译时不存在,指令永远不会被绑定
    【解决方案3】:

    聚会迟到了,但它可能对某人有所帮助:

    ng-readonly ="" 
    

    如果表达式为真,将设置属性。

    还有许多其他 ng 属性以这种方式工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-01
      • 2015-08-12
      • 2013-03-19
      • 1970-01-01
      • 1970-01-01
      • 2016-08-29
      • 2016-09-03
      • 2012-11-26
      相关资源
      最近更新 更多