【问题标题】:Rendering a Collection with Multiple Sub Collections渲染具有多个子集合的集合
【发布时间】:2013-03-20 15:08:05
【问题描述】:

我正在尝试将应用程序转换为 Backbone Marionette,但在渲染包含多个子集合的项目集合时遇到问题。

背景:

我正在开发一个地址簿应用程序,主要是为了我自己的启迪,但也希望对其他人有用。此应用程序的主屏幕显示用户联系人列表。这些联系人中的每一个都由一个视图表示,并有一个支持它的模型。这些模型中的每一个都具有存储为模型属性集合的附加关系信息。也就是说,电话号码和电子邮件地址都存储为每个联系人的集合。这些关系都由 Backbone Relational 支持,而且很好。

问题:

尝试将联系人视图从 Backbone.View 转换为 Marionette 时,我的第一个想法是使用 Backbone.Marionette.CompositeView,但复合视图只需要一个集合。呈现具有多个集合的重复项的正确方法是什么?

【问题讨论】:

  • 真的需要收藏吗?这种方法听起来有点过度设计。电话号码是否有 API 端点?它们实际上是存储主干模型还是仅存储 Javascript 原语?
  • 它们实际上是骨干模型。每个都有附加信息,否则它们只是父模型上的字段。我确信需要更多的是调整我对如何使用 Marionette 的思考方式。
  • 由于您给出的原因,CompositeView 将无法工作,但您可以轻松地创建一个管理多个 CollectionView 实例的 ItemView。这基本上就是 CompositeView 所做的。
  • 那么,创建一个 onRender 回调并在其中创建和渲染每个集合视图?

标签: javascript backbone.js marionette backbone-relational


【解决方案1】:

我写了一篇关于类似问题的博客文章。关键是使用复合视图来渲染集合,并给它另一个复合视图作为“itemView”属性来渲染嵌套集合。

工作代码:http://davidsulc.github.com/backbone.marionette-nested-views/

博文:http://davidsulc.com/blog/2013/02/03/tutorial-nested-views-using-backbone-marionettes-compositeview/

代码仓库:https://github.com/davidsulc/backbone.marionette-nested-views

注意:您还可以在嵌套视图http://lostechies.com/derickbailey/2012/04/05/composite-views-tree-structures-tables-and-more/ 上查看 Derick 的博客 psot

【讨论】:

  • 这似乎涵盖了复合视图的普通使用。为了扩展链接博客文章中的示例,我想显示一个城市(这将是 CompositeView 的 ItemView 部分)并显示附加到该 ItemView 的两个集合,因为该城市有一个英雄集合和一个恶棍集合。也就是说,两个不同的集合。经过大量阅读和修改代码后,看起来最好的方法是为 City 使用 ItemView,并将一些代码放在该 City 的 onRender 回调中,以创建和渲染 Heroes CollectionView 和另一个用于反派的代码。
【解决方案2】:

看看 Marionette 中的 CompositeView。这可能是您正在寻找的更多内容。

Marionette CompositeView documentation

Marionette CompositeView Article

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    相关资源
    最近更新 更多