Понимание ограничений bindonce
Я читал о bindonce как способ сокращения часов и повышения производительности. Чтобы лучше понять пакет, я сделал пример с ng-repeat
,
Без 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.