Яка різниця між:
{{::office.name}}
і
{{office.name}}
в кутовомуJS?
Відповіді:
Вираз, який починається з
::
, вважається одноразовим виразом. Одноразові вирази перестануть перераховуватись, як тільки вони стануть стабільними, що відбувається після першого дайджесту, якщо результат виразу є невизначеним значенням (див. Алгоритм стабілізації значення нижче).
У багатьох ситуаціях значення потрібно показувати лише у поданні і ніколи не збирається оновлювати з подання або контролера. Однак, якщо використовується двостороннє прив'язування, $digest
буде перевіряти наявність будь-яких змін у виразі в кожному циклі, що не є необхідним. У цих випадках ::
слід використовувати перед вираженням. Як зазначено у наведеному вище твердженні, це ефективніше, ніж синтаксис двостороннього прив'язки для таких випадків.
Блог: Одноразовий синтаксис прив’язки AngularJS від @Todd Motto
У горіховій оболонці, коли ми оголошуємо таке значення, як
{{ ::foo }}
усередині DOM, як тільки це значення стає визначеним, Angular відтворить його, відв’яже від спостерігачів і, таким чином, зменшить об’єм прив’язок всередині$digest
циклу. Просто!