0

私はBackboneJSMarionetteに少し慣れていません。また、 CollectionViewを使用してトリッキーな動作を実装する方法に少しこだわっています。それぞれに予定の日時が記載された予定のリストがあるとします(UNIXタイムスタンプとして保存されますが、これは重要ではありません)。

これらを表示するときは、次のように表示したいと思います。

今日

  • ミーティングA(10:00 AM)
  • ミーティングB(11:00 AM)
  • ミーティングC(1:00 PM)
  • ...そしてさらに4つ

次の7日間

  • ミーティングD(月曜日の午後3時)
  • ミーティングE(火曜日の午後2時)
  • ...そしてさらに7つ

私が検討しているアプローチは、次の7日間(今日を含む)サーバーから1つのコレクションをプルしてから、コレクションに対して2つのビュー(今日と1週間に1つ)を実行することです。これが私が苦労していることです:

  • AFAIK、Marionette.CollectionViewは、コレクション内のすべての要素をレンダリングします。この動作をオーバーライドして、たとえば3つまたは4つのアイテムのみをレンダリングする簡単な方法はありますか?
  • ...およびn個以上の行をどのように処理しますか?これは実際にはモデルではありませんが、そのデータは基になるコレクションから計算されます。

違いが出る場合は、@SlexAxtonのrequirejs-handlebarsプロジェクトをテンプレートに使用しています。

4

1 に答える 1

2

CompositeViewの代わりに使用することもできますCollectionView。したがって、必要collectionなサブセットを使用するための属性を自分で定義すると、「Xmore…」リンクを表示できます。

次のようになります。

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'
于 2012-07-16T11:41:01.230 に答える