Понимание ограничений bindonce

Я читал о bindonce как способ сокращения часов и повышения производительности. Чтобы лучше понять пакет, я сделал пример с ng-repeat,

JSBIN здесь

Без bindonce Я получаю 103 часа, 100 пунктов списка + 2 кнопки.

С помощью bindonce Я получаю 3 часа, 2 бутона + 1 форт в списке.

Если бы я понял binonce правильно, он удаляет часы после того, как связанный объект разрешен и отрендерен. Так,

Как это возможно, что с помощью bindonce изменения, внесенные в объект, все еще отражаются в DOM?

1 ответ

Решение

В документации есть подсказка:

Now this example uses 0 watches per person and renders exactly the same result as the above that uses ng-. *(Angular still uses 1 watcher for ngRepeatWatch)

Ключ в том, что Angular по-прежнему следит за ngRepeatтак что если массив изменится ngRepeat будет повторно визуализировать массив и bindonce функциональность повторно применяется.

Я обновил ваш пример jsbin здесь, чтобы лучше проиллюстрировать это http://jsbin.com/xugemico/2/edit

Обратите внимание на следующее дополнение:

<p>
  Bindonce: first item: 
  <span bindonce="arr" bo-bind="arr[0]"></span>
</p>

Приведенный выше код использует bindonce на первом элементе массива без отслеживания ngRepeat в игре вы увидите, что значение не обновляется в соответствии с привязкой внутри ngRepeat.

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