我正在努力使用Backbone.Marionette并想知道是否有任何理由使用Backbone.Marionette.ItemView,当一个简单的Backbone.View就足够了?
谢谢!
答案 0 :(得分:16)
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
是一个木偶项目视图,这将像一个魅力。如果它只是一个原始的Backbone View,您可能需要做一些工作以确保它按计划工作。
在我的应用中,我通常只选择使用ItemView作为所有非Collection和非Composite视图的基础。