【问题标题】:When to use a Backbone.View vs. Backbone.Marionette.ItemView?何时使用 Backbone.View 与 Backbone.Marionette.ItemView?
【发布时间】:2013-03-11 20:42:08
【问题描述】:

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

谢谢!

【问题讨论】:

    标签: backbone.js marionette


    【解决方案1】:

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

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

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

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

    3) 调用serializeData 方法获取数据(默认为来自this.modelthis.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,这将像一个魅力。如果它只是一个原始的 Backbone 视图,您可能需要做一些工作以确保它按计划工作。

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

    【讨论】:

    • 布雷特。感谢您提供清晰而有帮助的答案!正是我想要的。
    • 很高兴能提供帮助。 :) 我发现 Marionette 的源代码很容易阅读/理解,因此如果您对事情的运作方式/原因感到困惑,可以尝试看看它们。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多