AngularJS tiene una nueva característica desde la versión 1.3.0-beta.10: el "enlace perezoso de una sola vez" .
Las expresiones simples pueden tener el prefijo ::
, indicando a angular que deje de mirar después de que la expresión se evaluó por primera vez. El ejemplo común que se da es algo como:
<div>{{::user.name}}</div>
¿Existe una sintaxis similar para expresiones como las siguientes?
<div ng-if="user.isSomething && user.isSomethingElse"></div>
<div ng-class="{classNameFoo: user.isSomething}"></div>
javascript
angularjs
binding
lazy-evaluation
seldary
fuente
fuente
Respuestas:
Si. Puede prefijar todas las expresiones
::
, incluso las que están enngIf
ongClass
:En realidad, el código simplemente verifica que los dos primeros caracteres de la expresión sean
:
para activar el enlace único (y luego los elimina, por lo que los paréntesis ni siquiera son necesarios). Todo lo demás se mantiene igual.fuente
<div ng-if="::user.isSomething"></div>
y<div ng-if="::(!user.isSomething)"></div>
ambas renderizan. Funciona sin el "::".::
funcionan bien para mí, como se explica en mi edición. ¿Puedes hacer un violín, si tienes dudas?::
. Funciona bien para ng-class, pero ng-if no parece obedecer el enlace único para mí (1.5.6). Tenga en cuenta que estoy tratando de vincular unidireccionalmente una propiedad de objeto que proviene de una repetición ng. No estoy seguro si eso hace una diferencia.