AngularJS a une nouvelle fonctionnalité depuis la version 1.3.0-beta.10: le "lazy one-time binding" .
Les expressions simples peuvent être préfixées par ::
, indiquant angular d'arrêter de regarder après que l'expression a été évaluée pour la première fois. L'exemple commun donné est quelque chose comme:
<div>{{::user.name}}</div>
Existe-t-il une syntaxe similaire pour les expressions comme les suivantes?
<div ng-if="user.isSomething && user.isSomethingElse"></div>
<div ng-class="{classNameFoo: user.isSomething}"></div>
Oui. Vous pouvez préfixer toutes les expressions avec ::
, même ceux de ngIf
ou ngClass
:
<div ng-if="::(user.isSomething && user.isSomethingElse)"></div>
<div ng-class="::{classNameFoo: user.isSomething}"></div>
En fait, le code vérifie simplement que les deux premiers caractères de l'expression sont :
afin d'activer la liaison unique (puis les supprime, ainsi les parenthèses ne sont même pas nécessaires). Tout le reste reste le même.