Что означает два двоеточия внутри углового выражения {{::}}?


в чем разница между:

{{::office.name}}

и

{{office.name}}

в angularJS?

2 69

2 ответа:

на {{::office.name}} синтаксис-это одноразовая привязка Angular, доступная с версии 1.3
здесь хороший блог, объясняющий это.

одноразовая привязка Из Угловых Документов.

выражение, которое начинается с :: считается одноразовым выражением. Одноразовые выражения перестанут пересчитываться, как только они станут стабильными, что происходит после первого дайджеста, если результат выражения является неопределенным значением (см. алгоритм стабилизации значения ниже).

во многих ситуациях значения должны отображаться только в представлении и никогда не будут обновляться из представления или контроллера. Однако, если используется двусторонняя привязка,$digest будет проверять любые изменения в выражении в каждом цикле, что не является необходимым. В этих случаях :: следует использовать перед выражением. Как указано в приведенном выше заявлении, это более эффективно, чем синтаксис двусторонней привязки для таких случаев.


блог: AngularJS одноразовый синтаксис привязки С @Тодд Девизом

в ореховая скорлупа, когда мы объявляем такое значение, как {{ ::foo }} внутри DOM, как только это значение будет определено, Angular отобразит его, отвяжет его от наблюдателей и, таким образом, уменьшит объем Привязок внутри $digest петли. Просто!