分区backbone.js集合的项目(用于分组渲染)

时间:2012-02-13 21:54:12

标签: javascript model-view-controller backbone.js

假设我有一个名为Item的backbone.js模型存储在ItemCollection中。鉴于Item具有属性date,分区ItemCollection的最佳方法是什么,以便共享相同日期的所有项目最终都在同一分区中?

最终,分区数据结构应该返回一个(backbone.js)视图,该视图应该呈现按日期分组的项目。

最好的办法是什么?

到目前为止,我考虑了

  1. 在呈现索引视图时动态提取分区,但这可能会破坏骨干基于事件的机制的优雅,以呈现集合/模型更新。

  2. 将每个分组标头表示为Header模型的实例,并将一个集合与其分区相关联。我会以某种方式将附加到Header实例的分区与主ItemCollection同步,但这可能通过主干的事件机制来管理。

  3. 这些方法中的任何一种都有意义吗?还有其他想法吗?

    P.S。:我的后端数据模型中不存在分组结构(我想避免引入它),所以这是一些需要在客户端即时发生的映射

1 个答案:

答案 0 :(得分:1)

看起来你的两个选项的混合可行。我可能会按如下方式处理:

  1. 您可以拥有一个Header模型(更具描述性),而不是ItemGroup,它会在Item内部呈现collection,这将是一个分区较大的ItemCollection
  2. 当您渲染父视图时,可以完成分区本身,我将其称为AppView。在AppView#render中,根据需要对数据进行分区。 (您没有明确要求如何对数据进行分区,但您可以使用Underscore在几行代码中执行此操作。)
  3. AppView#render绑定到add的{​​{1}}和remove事件,这样无论何时添加新项目,分区都会重新呈现。