Видимость:
Пока ваш angularjs загружается, пользователь может увидеть ваши скобки в html. С этим можно справиться ng-cloak
. Но для меня это обходной путь, который мне не нужно использовать, если я использую ng-bind
.
Представление:
{{}}
Это гораздо медленнее .
Это ng-bind
является директива и поместить наблюдателя на пройденный переменной. Таким образом, оно ng-bind
будет применяться только тогда, когда переданное значение действительно изменится .
С другой стороны, скобки будут проверяться и обновляться в каждом $digest
, даже если в этом нет необходимости .
В настоящее время я создаю большое одностраничное приложение (~ 500 привязок за просмотр). Переход от {{}} к строгому ng-bind
сэкономил нам около 20% в каждом scope.$digest
.
Предложение :
Если вы используете модуль перевода, такой как angular-translate , всегда предпочитайте директивы перед скобками.
{{'WELCOME'|translate}}
=> <span ng-translate="WELCOME"></span>
Если вам нужна функция фильтра, лучше перейдите к директиве, которая на самом деле просто использует ваш собственный фильтр. Документация для сервиса $ filter
ОБНОВЛЕНИЕ 28.11.2014 (но может и не по теме)
В Angular 1.3x bindonce
была представлена функциональность. Поэтому вы можете привязать значение выражения / атрибута один раз (будет связано, когда! = 'Undefined').
Это полезно, когда вы не ожидаете, что ваша привязка изменится.
Использование: Место ::
до привязки:
<ul>
<li ng-repeat="item in ::items">{{item}}</li>
</ul>
<a-directive name="::item">
<span data-ng-bind="::value"></span>
Пример:
ng-repeat
выводить некоторые данные в таблицу с несколькими привязками на строку. Привязки перевода, выходные данные фильтра, которые выполняются в каждом дайджесте области.
ngBind
вместо того,{{ expression }}
чтобы шаблон мгновенно отображался браузером в исходном состоянии до того, как Angular его скомпилирует. Поскольку онngBind
является атрибутом элемента, он делает привязки невидимыми для пользователя во время загрузки страницы». - но ничего не сказано о производительности.