1

SPEED & PERFORMANCEdoes angular2-beta.0真的緩存視圖嗎?

角2大於角度1與支持顯着更快的通過服務器端預呈現快速 初始負載,離線編譯 快速啓動,以及用於 超快變化檢測和視圖緩存平滑的虛擬滾動和快速的視圖轉換。

特點很好看,但一個正常的要求是,當我從導航到ListComponentViewComponent,我想保持ListComponent緩存,所以當我從ViewComponent單擊回來,ListComponent不需要重新呈現(ListComponent常從第2,3頁獲取AJAX數據等等。我知道我可以在服務中保留數據並存儲scrollPosition,但是它會再次提交數據。我真的認爲緩存是一種更好的方法。

我執行CanReuse,但它不起作用,它只適用於在之間導航210。所以,我想知道ListComponentViewComponent緩存如何工作。

回答

1

使用ProtoViewRef類:

一個ProtoView是一個典型的觀點是模板編譯的結果,所使用的角度來有效地創建由此看來基於編譯模板的一個實例。

大多數ProtoView是由Angular在內部創建和使用的,您不需要了解它們,除非您在高級用例中通過低級別的編譯器API自己編譯組件。

鑑於這種模板:

Count: {{items.length}} 
    <ul> 
    <li *ngFor="var item of items">{{item}}</li> 
    </ul> 

角desugars並編譯該模板分成兩個ProtoViews:

  • 外ProtoView:

    Count: {{items.length}} 
    <ul> 
        <template ngFor var-item [ngForOf]="items"></template> 
    </ul> 
    
  • 內ProtoView:

    <li>{{item}}</li> 
    

注意,原始模板被分解成兩個獨立的ProtoViews。

參考