5

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

谢谢!

4

1 回答 1

16

Marionette 的 ItemView 提供了一个默认值renderclose方法,可以为您做一些事情。

render执行以下操作(除其他外):

1) 将视图标记为 !this.isClosed(与在 Regions 中显示视图有关,另一个 Marionette 概念)

2) 在渲染事件之前和之后触发

3) 调用serializeData方法来获取数据(默认为来自this.model或的数据) this.collection

4) 获取模板(可能来自 TemplateCache)并通过 Marionette.Renderer 进行渲染

5) 绑定 UI 元素

除了这种“免费”render方法之外,您还可以获得关闭的功能。

当然,如果您使用的是 CollectionView/ItemView 组合(非常强大)或 CompositeView/ItemView,则必须使用 ItemView。

在这些情况之外,一大好处是您知道您的视图将与 Marionette Regions 兼容。理想情况下,在 Marionette 应用程序中,您使用单独的区域来显示您的视图,如下所示:

var myView = new MyView();

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

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

如果MyView是 Marionette ItemView,这将像一个魅力。如果它只是一个原始的主干视图,您可能需要做一些工作以确保它按计划工作。

在我的应用程序中,我通常只选择使用 ItemView 作为我所有非集合和非复合视图的基础。

于 2013-03-11T20:56:13.647 回答