我正在第一次尝试使用 Backbone.Marionette,并想知道当一个简单的 Backbone.View 就足够了时,是否有任何理由使用 Backbone.Marionette.ItemView?
谢谢!
我正在第一次尝试使用 Backbone.Marionette,并想知道当一个简单的 Backbone.View 就足够了时,是否有任何理由使用 Backbone.Marionette.ItemView?
谢谢!
Marionette 的 ItemView 提供了一个默认值render
和close
方法,可以为您做一些事情。
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 作为我所有非集合和非复合视图的基础。