Видимість:
Поки ваш 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
є атрибутом елемента, він робить прив'язки невидимими для користувача під час завантаження сторінки." - але про продуктивність нічого не згадується.