Visibilidade:
Enquanto o angularjs estiver inicializando, o usuário poderá ver os colchetes no html. Isso pode ser tratado com ng-cloak
. Mas, para mim, esta é uma solução alternativa, que não preciso usar, se usar ng-bind
.
Atuação:
O {{}}
é muito mais lento .
Esta ng-bind
é uma diretiva e colocará um observador na variável passada. Portanto, ng-bind
isso só será aplicado quando o valor transmitido realmente mudar .
Os suportes, por outro lado, serão sujos verificados e atualizados em todos $digest
, mesmo que não seja necessário .
No momento, estou criando um grande aplicativo de página única (~ 500 ligações por visualização). Mudar de {{}} para estrito ng-bind
economizou cerca de 20% em todos scope.$digest
.
Sugestão :
Se você usar um módulo de conversão como angular-translate , sempre prefira diretivas antes da anotação entre colchetes.
{{'WELCOME'|translate}}
=> <span ng-translate="WELCOME"></span>
Se você precisar de uma função de filtro, é melhor optar por uma diretiva, que na verdade apenas usa seu filtro personalizado. Documentação para o serviço $ filter
ATUALIZAÇÃO 28.11.2014 (mas talvez fora do tópico):
No Angular 1.3x, a bindonce
funcionalidade foi introduzida. Portanto, você pode vincular o valor de uma expressão / atributo uma vez (será vinculado quando! = 'Indefinido').
Isso é útil quando você não espera que sua ligação seja alterada.
Uso: Coloque ::
antes da ligação:
<ul>
<li ng-repeat="item in ::items">{{item}}</li>
</ul>
<a-directive name="::item">
<span data-ng-bind="::value"></span>
Exemplo:
ng-repeat
para gerar alguns dados na tabela, com várias ligações por linha. Ligações de tradução, saídas de filtro, que são executadas em todos os resumos de escopo.
ngBind
vez de{{ expression }}
se um modelo for exibido momentaneamente pelo navegador em seu estado bruto antes que o Angular o compile. ComongBind
é um atributo do elemento, torna as ligações invisíveis para o usuário enquanto a página está carregando." - mas nada é mencionado sobre desempenho.