Backbone.js 基于某些标准对主干集合视图进行分段

Backbone.js 基于某些标准对主干集合视图进行分段,backbone.js,marionette,Backbone.js,Marionette,我对和有点陌生,我对如何用一个。假设我有一个约会列表,每个都有约会日期/时间(存储为unix时间戳,但这并不重要) 当我显示这些时,我希望按如下方式显示它们: 今天 会议A(上午10:00) 会议B(上午11:00) 会议C(下午1:00) 。。。还有4个 未来7天 会议D(星期一下午3时) 会议E(星期二下午2时) 。。。还有7个 我正在考虑的方法是在接下来的7天(包括今天)从服务器上提取一个集合,然后对该集合进行两次查看(一次用于今天,一次用于本周)。以下是我正在努力解决的问题:

我对和有点陌生,我对如何用一个。假设我有一个约会列表,每个都有约会日期/时间(存储为unix时间戳,但这并不重要)

当我显示这些时,我希望按如下方式显示它们:

今天
  • 会议A(上午10:00)
  • 会议B(上午11:00)
  • 会议C(下午1:00)
  • 。。。还有4个
未来7天
  • 会议D(星期一下午3时)
  • 会议E(星期二下午2时)
  • 。。。还有7个
我正在考虑的方法是在接下来的7天(包括今天)从服务器上提取一个集合,然后对该集合进行两次查看(一次用于今天,一次用于本周)。以下是我正在努力解决的问题:

  • 好的,Marionette.CollectionView呈现集合中的所有元素。有没有一种简单的方法可以覆盖这种行为,只渲染(比如)3或4个项目
  • 我该如何处理。。。还有更多的线?它实际上不是一个模型,但它的数据是从底层集合计算出来的

如果有区别的话,我将使用@SlexAxton的项目作为模板。

您可以使用
CompositeView
而不是
CollectionView
。因此,您可以定义自己的
集合
属性以使用所需的子集,然后可以显示“X更多…”链接

可能是这样的:

EventView = Backbone.Marionette.ItemView.extend
  template: 'event'


EventsView = Backbone.Marionette.CompositeView.extend
  itemView: EventView
  template: 'events'

  initialize: (attributes)->
    @extractSubset(attributes.collection)

  extractSubset: (collection)->
    @collection  = new EventsCollection(collection.filterByWhatYouWant())
    @othersCount = collection.length - @collection.length

  appendHtml: (collectionView, itemView)->
    collectionView.$('.events').append(itemView.el)

  serializeData: ->
    othersCount:      @othersCount
    andAnyOtherThing: 'you need in the template'

也许这将非常适合模板中的逻辑:)你必须做某些事情,即使它不正确。我使用treenode作为
模型和
单个模板构建了一个treeview,其中包含logicOh,真棒。我会试一试,然后告诉你。谢谢