Quelle est la différence entre:
{{::office.name}}
et
{{office.name}}
dans angularJS?
Réponses:
Une expression commençant par
::
est considérée comme une expression à usage unique. Les expressions à usage unique arrêteront de recalculer une fois qu'elles sont stables, ce qui se produit après le premier condensé si le résultat de l'expression est une valeur non indéfinie (voir l'algorithme de stabilisation de valeur ci-dessous).
Dans de nombreuses situations, les valeurs doivent être affichées uniquement dans la vue et ne seront jamais mises à jour à partir de la vue ou du contrôleur. Cependant, si la liaison bidirectionnelle est utilisée, $digest
vérifiera les changements dans l'expression à chaque cycle, ce qui n'est pas nécessaire. Dans ces cas, ::
doit être utilisé avant l'expression. Comme indiqué dans la déclaration ci-dessus, c'est plus efficace que la syntaxe de liaison bidirectionnelle pour de tels cas.
Blog: Syntaxe de liaison unique AngularJS de @Todd Motto
En un mot, lorsque nous déclarons une valeur telle que
{{ ::foo }}
dans le DOM, une fois que cette valeur sera définie, Angular la rendra, la dissociera des observateurs et réduira ainsi le volume de liaisons à l'intérieur de la$digest
boucle. Facile!