Visibilidad:
Mientras su angularjs es bootstrapping, el usuario puede ver sus corchetes colocados en el html. Esto se puede manejar con ng-cloak
. Pero para mí esta es una solución, que no necesito usar, si la uso ng-bind
.
Actuación:
El {{}}
es mucho más lento .
Esta ng-bind
es una directiva y colocará un observador en la variable pasada. Por lo tanto ng-bind
, solo se aplicará cuando el valor pasado realmente cambie .
Los soportes, por otro lado, se revisarán sucios y se actualizarán en todos $digest
, incluso si no es necesario .
Actualmente estoy creando una gran aplicación de una sola página (~ 500 enlaces por vista). Cambiar de {{}} a estricto ng-bind
nos ahorró alrededor del 20% en cada uno scope.$digest
.
Sugerencia :
Si usa un módulo de traducción como angular-translate , siempre prefiera las directivas antes de la anotación de corchetes.
{{'WELCOME'|translate}}
=> <span ng-translate="WELCOME"></span>
Si necesita una función de filtro, es mejor ir a una directiva, que en realidad solo usa su filtro personalizado. Documentación para el servicio $ filter
ACTUALIZACIÓN 28.11.2014 (pero tal vez fuera del tema):
En Angular 1.3x bindonce
se introdujo la funcionalidad. Por lo tanto, puede vincular el valor de una expresión / atributo una vez (se vinculará cuando! = 'Indefinido').
Esto es útil cuando no espera que cambie su enlace.
Uso: Coloque ::
antes de su encuadernación:
<ul>
<li ng-repeat="item in ::items">{{item}}</li>
</ul>
<a-directive name="::item">
<span data-ng-bind="::value"></span>
Ejemplo:
ng-repeat
para generar algunos datos en la tabla, con múltiples enlaces por fila. Enlaces de traducción, salidas de filtro, que se ejecutan en cada resumen de alcance.
ngBind
lugar de{{ expression }}
si el navegador muestra momentáneamente una plantilla en su estado bruto antes de que Angular la compile. Dado quengBind
es un atributo de elemento, hace que los enlaces sean invisibles para el usuario mientras se carga la página". - pero no se menciona nada sobre el rendimiento.