2

私は次のような状況にあります。

(モデルが存在しません!)にメッセージを表示するためにcollection.length = 0パラメーターをに渡したい場合。どうすれば目標を達成できますか?listTemplatelistTemplate

これが私のコードです。

var ListView = Marionette.CompositeView.extend({
    template: listTemplate,
    // some code
});

var itemView = Marionette.ItemView.extend({
    // some code
});

-

app.mainColumn.show(new ListView({
    collection: tasks,
    vent: myApp.vent
}));
4

2 に答える 2

7

メソッドを再定義できると思いますserializeData

var ListView = Marionette.CompositeView.extend({
  テンプレート: listTemplate,
  serializeData: 関数(){
    viewData = { foo: 'foo' };
    if(this.collection.length == 0) viewData.bar = 'バー';
    ビューデータを返します。
  }
});

したがって、テンプレートでthis.barは、 が使用可能です (コレクションが空の場合のみ)。

于 2012-07-04T08:39:15.383 に答える
3

使用するテンプレートをプログラムで設定し、変数の受け渡しをスキップできます。例えば:

getTemplate: function(){
    if (this.collection.length == 0){
        return "#no-models-are-present-template";
    } else {
        return "#regular-template";
    }
}

ソース: https://github.com/marionettejs/backbone.marionette/blob/master/docs/marionette.view.md#change-which-template-is-rendered-for-a-view

または、空のビュー
https://github.com/marionettejs/backbone.marionette/blob/master/docs/marionette.collectionview.md#collectionviews-emptyviewを設定する
か、テンプレート ヘルパーhttps://github.com/を使用することもできます。 marionettejs/backbone.marionette/blob/master/docs/marionette.view.md#object-or-function-as-templatehelpers
を使用して同じ結果を得ることができます。

空のコレクション用であることを考えると、一致するテンプレートで空のビューを使用します。

于 2013-08-11T20:08:52.447 に答える