何时使用Backbone.View与Backbone.Marionette.ItemView?

时间:2013-03-11 20:42:08

标签: backbone.js marionette

我正在努力使用Backbone.Marionette并想知道是否有任何理由使用Backbone.Marionette.ItemView,当一个简单的Backbone.View就足够了?

谢谢!

1 个答案:

答案 0 :(得分: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是一个木偶项目视图,这将像一个魅力。如果它只是一个原始的Backbone View,您可能需要做一些工作以确保它按计划工作。

在我的应用中,我通常只选择使用ItemView作为所有非Collection和非Composite视图的基础。