2013-03-11 51 views

回答

16

Marionette的ItemView提供了一個默認的renderclose方法,它爲你做了幾件事。

render執行以下操作(除其他事項外):

1)標記視圖this.isClosed(與表示區域的觀點,另一個木偶概念)

2)之前觸發和渲染後!事件

3)調用一個serializeData方法來獲取數據(默認爲從任this.modelthis.collection數據。

4)獲取模板(可能來自TemplateCache)和渲染通過Marionetter.Renderer

5)結合UI元素

除了這個「自由」 render方法,你也可以得到關閉功能。當然,如果你正在使用一個CollectionView/ItemView組合(這是非常強大的)或一個CompositeView/ItemView,你必須使用一個ItemView。

在這些情況之外,一大好處是您知道您的視圖將與Marionette區域兼容。理想情況下,木偶的應用程序,你可以使用獨立的區域,以顯示你的觀點,比如:

var myView = new MyView(); 

// render and display the view 
MyApp.mainRegion.show(myView); 

// closes the current view 
MyApp.mainRegion.close(); 

如果MyView是一個木偶ItemView控件,這將工作就像一個魅力。如果它只是一個原始的骨幹視圖,您可能需要做一些工作來確保它按照計劃運行。

在我的應用程序中,我通常選擇使用ItemView作爲所有非集合視圖和非複合視圖的基礎。

+1

Brett。感謝您提供清晰有用的答案!正是我在找什麼。 – Charles 2013-03-12 02:07:31

+2

很高興爲您服務。 :)我發現木偶的源代碼非常容易閱讀/理解,所以如果你對於如何/爲什麼像他們那樣工作感到困惑,你可以嘗試給他們一看。 – brettjonesdev 2013-03-12 15:23:35