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-bindisso 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-bindeconomizou 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 bindoncefuncionalidade 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-repeatpara 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.
ngBindvez 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.