Можно использовать ng-bind или {{}}?

0

Хорошо, поэтому я прочитал в нескольких местах, что использование ng-bind лучше для производительности. Но, глядя на эти jsperfs, я немного смущен :)

https://jsperf.com/angular-bind-vs-brackets

http://jsperf.com/ng-bind-vs-brackets/14

Итак, что лучше всего подходит для производительности?

{{::value}}

или

<div ng-bind="value"></div>
  • 4
    ng-bind используется для односторонней привязки, а {{}} - для двусторонней привязки. Для одностороннего связывания - angular не следит за изменением переменной или нет. Но для двухсторонней привязки - угловое наблюдение, будет ли эта переменная изменяться или нет, а если значение меняется, то угловое отражает newValue в Html или JS.
  • 0
    Так что, если мы будем сравнивать их более равномерно, то {{:: value}} - лучший вариант, когда речь идет о производительности?
Показать ещё 7 комментариев
Теги:
brackets
ng-bind

3 ответа

2

Вы должны использовать ng-bind. Его директива, которая ставит наблюдателя на эту переменную, поэтому она обновляется только при изменении переменной, а {{}} будет грязно проверять и обновлять переменную в каждом цикле дайджеста.

См. Этот ответ

Также :: называется "bindonce" и будет устанавливать переменную только один раз и после этого не обновляться.

e: jsperf проверяет привязку переменной к html (я думаю), в то время как связанный ответ фокусируется на поведении потом. Если у вас есть 100 фигурных скобок и вы обновляете одну модель, каждый {{}} обновляется. Хотя ng-bind обновляется только в том случае, если сама переменная изменяется, поскольку она создает наблюдателя для этой переменной.

  • 0
    Ответ, на который вы ссылаетесь, более 1 года. Действительно ли он все еще действителен? Хотите прокомментировать тесты jsperf? .. Почему это показывает, что {{}} быстрее?
1

Когда дело доходит до одноразовой привязки, вы также должны использовать двоеточие в ng-bind.

Поэтому используйте ng-bind="::value"

для фильтра или выражений вы должны использовать скобки: ng-bind="::(value | number:2)"

-3

лучше использовать ng-bind. Если файлы javascript не загружены, {{}} отобразится на странице.

  • 1
    Вопрос был о производительности ..;)
  • 5
    Вы можете скрыть {{}} используя ng-cloak
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню