В чем разница между:
{{::office.name}}
а также
{{office.name}}
в angularJS?
Ответы:
Выражение, которое начинается с
::
, считается одноразовым выражением. Одноразовые выражения перестанут пересчитываться, как только они станут стабильными, что происходит после первого дайджеста, если результатом выражения является не неопределенное значение (см. Алгоритм стабилизации значения ниже).
Во многих ситуациях значения должны отображаться только в представлении и никогда не будут обновляться из представления или контроллера. Однако, если используется двусторонняя привязка, $digest
будет проверяться наличие каких-либо изменений в выражении в каждом цикле, что необязательно. В этих случаях ::
следует использовать перед выражением. Как указано в приведенном выше утверждении, в таких случаях это более эффективно, чем синтаксис двусторонней привязки.
Блог: синтаксис одноразовой привязки AngularJS от @Todd Motto
В скорлупе, когда мы объявляем значение, например,
{{ ::foo }}
внутри DOM, как только это значение становится определенным, Angular отрендерит его, отвяжет от наблюдателей и, таким образом, уменьшит объем привязок внутри$digest
цикла. Просто!