我正在努力通過我的第一次嘗試使用Backbone.Marionette,並想知道是否有任何理由使用Backbone.Marionette.ItemView時,一個簡單的Backbone.View就足夠了?何時使用Backbone.View與Backbone.Marionette.ItemView?
謝謝!
我正在努力通過我的第一次嘗試使用Backbone.Marionette,並想知道是否有任何理由使用Backbone.Marionette.ItemView時,一個簡單的Backbone.View就足夠了?何時使用Backbone.View與Backbone.Marionette.ItemView?
謝謝!
Marionette的ItemView提供了一個默認的render
和close
方法,它爲你做了幾件事。
render
執行以下操作(除其他事項外):
1)標記視圖this.isClosed(與表示區域的觀點,另一個木偶概念)
2)之前觸發和渲染後!事件
3)調用一個serializeData
方法來獲取數據(默認爲從任this.model
或this.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作爲所有非集合視圖和非複合視圖的基礎。
Brett。感謝您提供清晰有用的答案!正是我在找什麼。 – Charles 2013-03-12 02:07:31
很高興爲您服務。 :)我發現木偶的源代碼非常容易閱讀/理解,所以如果你對於如何/爲什麼像他們那樣工作感到困惑,你可以嘗試給他們一看。 – brettjonesdev 2013-03-12 15:23:35