2016-10-03 1 views
0

Ich kenne aus mehreren Blogs und einige Fragen hier in Stackoverflow, dass in Angular 1 ng-bind hat eine bessere Leistung als {{}} Interpolation wegen der Art und Weise der $ Digest-Prozess funktioniert.Angular 2 Interpolation vs Eigenschaft Bindung

Angular 2 hat die Art der Datenbindung geändert und ich möchte wissen, ob es irgendwelche Tests zu diesem Thema gibt. Insbesondere, wenn diese

<h1 [innerText]="obj.name"></h1> 

noch besser ist als diese

<h1> {{ obj.name }} </h1> 
+1

'innerText' kann aus einem einfachen Grund nicht besser sein, [es ist nicht standardisiert] (https://developer.mozilla.org/en-US/docs/Web/API/Node/innerText). Und ich nehme an, dass das Binden von 'textContent' Probleme mit Universal verursacht. – estus

Antwort

0

Verwenden Sie getTitle() Methode als Beispiel. checkBinding ist Debug-Modus-Prüfung, kann ignoriert werden.

Attribut Bindung Anrufe sanitize und el.setAttribute:

var currVal_0 = self.context.getTitle(); 
    if (jit_checkBinding34(throwOnChange,self._expr_0,currVal_0)) { 
    self.renderer.setElementAttribute(self._el_0,'innerHTML',((self.viewUtils.sanitizer.sanitize(jit_SecurityContext36.HTML,currVal_0) == null)? null: self.viewUtils.sanitizer.sanitize(jit_SecurityContext36.HTML,currVal_0).toString())); 
    self._expr_0 = currVal_0; 
    } 

Interpolation ruft el.textContent = value;:

var currVal_0 = jit_interpolate36(1,'',self.context.getTitle(),''); 
    if (jit_checkBinding34(throwOnChange,self._expr_0,currVal_0)) { 
    self.renderer.setText(self._text_1,currVal_0); 
    self._expr_0 = currVal_0; 
    } 

Der einzige Unterschied sanitize verwendet, können Sie den Quellcode überprüfen html_sanitizer.ts zu sehen, dass ist tut einige komplizierte Sachen.

0

Interpolation ist eine bequeme Alternative für Immobilien in vielen Fällen verbindlich.

Tatsächlich übersetzt Angular 2 diese Interpolationen in die entsprechenden Eigenschaftsbindungen, bevor die Ansicht gerendert wird.

In Angular 2, glaube ich, gibt es keinen technischen Grund, eine Form der anderen vorzuziehen. Sie sollten die Form auswählen, die sich für die Aufgabe am natürlichsten anfühlt.