Видимість:
Поки ваш 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>
Якщо вам потрібна функція фільтра, краще знайдіть директиву, яка фактично просто використовує ваш власний фільтр. Документація для послуги фільтра $
ОНОВЛЕННЯ 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є атрибутом елемента, він робить прив'язки невидимими для користувача під час завантаження сторінки." - але про продуктивність нічого не згадується.