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

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

{{::office.name}}

а также

{{office.name}}

в угловом JS?

Ответы

Ответ 1

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

Ответ 2

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

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

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


Блог: синхронный синтаксис AngularJS от детектора @Todd

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