2

Marionette CollectionView 内に単一の一意のビューを作成する方法はありますか? 私は次のようなことを意味します:

コレクションビュー

  • StartView (これは独自のビューです)
  • 通常のアイテムビュー
  • 通常のアイテムビュー
  • 通常のアイテムビュー

一意とは、「Start ItemView」が一意のテンプレートを使用する必要があり、通常の ItemView に関連付けられたメソッドを持たないことを意味します。

私が試したこと:

  • CollectionView のメソッドはその子ビューで動作するため、CollectionView の el の前に開始ビューを追加するだけでは望ましくありません。

  • Marionette のドキュメントでは、この状況では buildItemView をオーバーライドすることが提案されています (私は思いますか?)。上書きする方法がわかりません。StartView には関連付けられたモデルやオプションがないため、 buildItemView を呼び出すだけでは機能しません。これらの引数を除外できないか、未定義を返すだけのようです。

  • CollectionView のテンプレートに StartView のマークアップを含めることはできません。なぜなら、Marionette CollectionView にはテンプレートを含めることができないからです。

  • Marionette のドキュメントから、これが CompositeView のユース ケースに適合していないようです。しかし、多分私は間違っています。

私はおそらくかなり明白な何かを見逃しています。助けてくれてありがとう。

編集:フォーマット

4

2 に答える 2

5

「StartView」と「NormalView」の 2 つの異なるビューを作成します。

StartView = Marionette.ItemView.extend({
    template:"#start-template'
});
NormalView = Marionette.ItemView.extend({
    template:"#normal-template"
});

コレクション ビューで getItemView をオーバーライドし、'StartView' と 'NormalView' を返します。次のようにします。

MyCollectionView = Marionette.CollectionView.extend({
   getItemView:function(item){
       if(item.get("ImTheFirst")===true)
          return StartView;
        else
          return NormalView;
    }
});

コレクションの最初の項目で、プロパティ「ImTheFirst」を追加し (たとえば)、true に設定します。

于 2013-04-01T19:43:51.200 に答える