Sichtbarkeit:
Während Ihr Angularjs bootet, könnte der Benutzer Ihre platzierten Klammern im HTML sehen. Dies kann mit ng-cloak
gehandhabt werden. Aber für mich ist das ein Workaround, den ich nicht verwenden muss, wenn ich ng-bind
benutze.
Leistung:
Die {{}}
sind viel langsamer.
Dieses ng-bind
ist eine Directive und wird einen Beobachter auf die übergebene Variable setzen. Deshalb wird das ng-bind
nur angewendet, wenn sich der übergebene Wert tatsächlich ändert.
Die Klammern hingegen werden dirty gecheckt und in jedem $digest
aktualisiert, auch wenn es nicht notwendig ist.
Ich baue derzeit eine große Single-Page-App (~500 Bindungen pro Ansicht). Der Wechsel von {{}} zu strengem ng-bind
hat uns etwa 20% in jedem scope.$digest
eingespart.
Vorschlag:
Wenn Sie ein Übersetzungsmodul wie angular-translate verwenden, bevorzugen Sie immer Directives vor Klammernannotationen.
{{'WELCOME'|translate}}
=>
Wenn Sie eine Filterfunktion benötigen, verwenden Sie besser eine Directive, die tatsächlich Ihren benutzerdefinierten Filter verwendet. Dokumentation für $filter-Service
UPDATE 28.11.2014 (aber vielleicht vom Thema abweichend):
In Angular 1.3x wurde die bindonce
-Funktionalität eingeführt. Daher können Sie den Wert eines Ausdrucks/Attributes einmal binden (wird gebunden, wenn != 'undefined').
Dies ist nützlich, wenn Sie nicht erwarten, dass sich Ihre Bindung ändert.
Verwendung: Platzieren Sie ::
vor Ihrer Bindung:
{{item}}
Beispiel:
ng-repeat
, um einige Daten in der Tabelle auszugeben, mit mehreren Bindungen pro Zeile. Übersetzungs-Bindungen, Filterausgaben, die bei jedem Scope-Digest ausgeführt werden.