2016-10-03 80 views
0

我知道從多個博客和一些問題在這裏在stackoverflow角1 ng-bind有更好的性能比{{}}插值,因爲$消化過程的工作方式。角2插值vs屬性綁定

Angular 2已經改變了它的數據綁定方式,我想知道是否有任何測試的主題。具體而言,如果這

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

仍比這個

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

因爲簡單的原因'innerText'不能更好,[它不是標準化的](https://developer.mozilla.org/en-US/docs/Web/API/Node/innerText)。我猜想綁定'textContent'會給你帶來Universal的問題。 – estus

回答

0

getTitle()方法爲例。 checkBinding是調試模式檢查,可以忽略。

屬性綁定調用sanitizeel.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; 
    } 

插值,呼籲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; 
    } 

唯一的區別是使用sanitize,您可以檢查html_sanitizer.ts源代碼,看看是不一些複雜的東西。

0

更好的插補也是產權在許多情況下,結合一個方便的選擇。

實際上,在呈現視圖之前,Angular 2會將這些插值轉換爲相應的屬性綁定。

在Angular 2中,我認爲沒有技術上的理由去選擇一種形式。你應該選擇感覺最自然的形式。