AngularJS a une nouvelle fonctionnalité depuis la version 1.3.0-beta.10: la "liaison unique paresseuse" .
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>
Réponses:
Oui. Vous pouvez préfixer toutes les expressions avec
::
, même celles dengIf
oungClass
:En fait, le code vérifie simplement que les deux premiers caractères de l'expression sont
:
destinés à activer la liaison unique (puis les supprime, donc les parenthèses ne sont même pas nécessaires). Tout le reste reste le même.la source
<div ng-if="::user.isSomething"></div>
et les<div ng-if="::(!user.isSomething)"></div>
deux sont rendus. Cela fonctionne sans le "::".::
fonctionnent bien pour moi, comme expliqué dans ma modification. Pouvez-vous faire un violon, en cas de doute?::
. Cela fonctionne bien pour ng-class, mais ng-if ne semble pas obéir à une liaison ponctuelle pour moi (1.5.6). Notez que j'essaie de lier à sens unique une propriété d'objet provenant d'un ng-repeat. Je ne sais pas si cela fait une différence.