Angularjs - grouping ng show

Angularjs - grouping ng show

本文关键字:show ng grouping Angularjs      更新时间:2024-03-09

如何在不破坏dom树顺序的情况下对ng个节目进行分组?

原因:我想减少的观察者数量

例如,我有这些ng节目:

<ul>
    <li>A</li>
    <li>B</li>
    <li ng-show="canEdit">C</li>
    <li ng-show="canEdit">D</li>
    <li ng-show="canEdit">E</li>
</ul>

我能做这样的事情吗:

<ul>
    <li>A</li>
    <li>B</li>
    {{ng-show-start(canEdit)}}
    <li>C</li>
    <li>D</li>
    <li>E</li>
    {{ng-show-end(canEdit)}}
</ul>

使用DOM元素而不是ng show start&end也可以是一个解决方案,但它必须能够删除其元素并在true上显示内容。

我知道这个问题已经存在三年了,可能无关紧要,但在angular 1.2+中有以下解决方案

<ul>
    <li>A</li>
    <li>B</li>
    <li ng-show-start="canEdit">C</li>
    <li>D</li>
    <li ng-show-end="canEdit">E</li>
</ul>

如果设置了multiElement: true,则-start-end后缀可以与ng-show, ng-if, ng-switch, ng-repeat和您自己的指令一起使用。

如果canEdit在初始分配后不会更改,则可以使用angular 1.3中引入的一次性绑定。ng-show="::canEdit"。https://docs.angularjs.org/guide/expression

如果你真的想对<li>标签进行分组,那么你需要将它们包装在一个html元素中,并将ng-show放在上

不过,我认为你不需要担心太多的观察者。我相信(尽管不确定)angular只会为canEdit分配一个观察者,因为它是一个绑定在多个位置的单个变量