0

ItemViews のリストを持つ CompositeView があります。ユーザーがログインしている場合とユーザーがログアウトしている場合の両方の状態で、同じコレクションがレンダリングされます。

ItemView はおおよそ次のようになります。

<div class="title">  
  {{ title }} 
</div>
{{#if MA.currentUser }}
  Add Review
{{/if}}

JavaScript の場合:

MA.Views.Items.Movie = Backbone.Marionette.ItemView.extend({
  テンプレート: 'items/movie',
  className: '映画'
});

ただし、これは期待される「レビューの追加」を表示しないようです。

この状況で何ができるか提案はありますか?

4

1 に答える 1

0

私の理解では、テンプレートは渡されたデータにのみアクセスできます。デフォルトでは、これはserializeDataItemView が継承する View クラスでシリアル化されるモデルです。templateHelpers を使用するか、カスタムの serializeData を作成することで、追加のデータを追加できます (他の方法でもかまいません)。

テンプレート ヘルパー

のテンプレート ヘルパーは次のItemViewようになります。

templateHelpers: {
  MA: function(){
    return MA; //Unknown if having the same function name as the global will effect it
  }
}

アイテム ビューで。marionette docs テンプレート ヘルパーを参照してください

テンプレート ヘルパーは、関数、オブジェクト リテラル、またはオブジェクトにすることができます。

serializeData

serializeDataserializeData の場合は、ItemView のクラスでメソッドを上書きするだけです。

serializeData: function(){
return {
  "some attribute": "some value"
}

これには、モデルもシリアル化する必要があることに注意してください。marionette docs serializeData

結論

templateHelpers最も単純な答えであり、おそらく意図されたものであることが判明する可能性があります。

于 2013-04-26T06:52:49.787 に答える