我对BackboneJS和Marionette有点新意,我对如何使用CollectionView实施某些棘手行为感到困惑。假设我有一个约会列表,每个约会都有一个约会日期/时间(存储为unix时间戳,但这并不重要)。
当我显示这些内容时,我想按如下方式显示它们:
我正在考虑的方法是在接下来的7天(包括今天)从服务器中提取一个集合,然后对集合进行2次查看(一个用于今天,一个用于一周)。这就是我正在努力的方法:
如果它有所作为,我正在使用@ SlexAxton的requirejs-handlebars项目进行模板化。
答案 0 :(得分:2)
您可以使用CompositeView
代替CollectionView
。因此,您自己定义collection
属性以使用您想要的子集,然后您可以显示“X more ...”链接。
可能是这样的:
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'