Связывания, вложенные в ленивую одноразовую привязку ng-repeat, связываются только один раз?

Я понимаю, что в следующем коде обе привязки будут привязываться лениво только один раз:

<li ng-repeat="item in ::items">{{::item.name}}</li>

Однако в следующем случае будет {{item.name}} обновляться каждый дайджест?

<li ng-repeat="item in ::items">{{item.name}}</li>

А как действует одноразовый переплет ng-repeat с?

<li ng-repeat="item in ::items">
  <span ng-repeat="thing in item.things">{{thing.name}}</span>
</li>

1 ответ

Решение

Сценарий 1:

<li ng-repeat="item in ::items">{{::item.name}}</li>

Оба выражения будут одноразовыми. Добавление элемента или изменение имени существующего элемента не будет отражено.

Демонстрация: http://plnkr.co/edit/53r8FCmcNK4MmM6Uzxp2?p=preview

Сценарий 2:

<li ng-repeat="item in ::items">{{item.name}}</li>

Первое выражение будет одноразовым. Добавление элемента не будет отражено. Изменение имени существующего элемента будет отражено.

Демонстрация: http://plnkr.co/edit/52wTEb8ze2FKRDDcS9Ow?p=preview

Сценарий 3:

<li ng-repeat="item in ::items">
  <span ng-repeat="thing in item.things">{{thing.name}}</span>
</li>

Первое выражение будет одноразовым. Добавление нового элемента не будет отражено. Добавление новой вещи и изменение названия существующей вещи будет отражено.

Демонстрация: http://plnkr.co/edit/HkObhkJtUnFEHBAzFUmN?p=preview

Другие вопросы по тегам