Что делает двойной двоеточие перед переменной выражения в angular js?

В angularjs, что такое двойное двоеточие :: перед переменной выражения и в чем разница между {{ firstName }} и {{ ::firstName }}?

Ответ 1

Взято из: https://www.binpress.com/tutorial/speeding-up-angular-js-with-simple-optimizations/135

Он гласит:

Синтаксис одноразового связывания {{ ::value }}

AngularJS недавно бросил интересную функцию в бета-версии версия 1.3.0: возможность визуализации данных один раз и пусть это сохраняется без влияния будущих обновлений модели. Это фантастические новости для разработчиков, очень заинтересованных в производительности! До этого обновления, wed обычно выводит значение в DOM так:

 <h1>{{ title }}</h1>

С новым одноразовым синтаксисом мы вводим двойную двоеточие перед нашим значением:

 <h1>{{ ::title }}</h1>

Angular обрабатывает DOM как обычно, и как только значение было решил удалить конкретное свойство из своего внутреннего $$watchers. Что это значит для производительности? Много! Это фантастическое дополнение, помогающее нам точно настраивать наши приложения.

Известно, что Angular становится медленнее с примерно 2000 привязками к процессу за грязной проверкой. Чем меньше мы можем добавить к этому ограничьте лучшее, поскольку привязки могут складываться без нас, действительно замечающих это!

Использование синтаксиса одиночного связывания является простым и, самое главное, быстрым. Синтаксис ясен и краток, и реальная польза от $$watcher служебные данные. Чем меньше работы Angular, тем больше наши приложения станут доступными.