listView.template
についてのテンプレートを認識するために、に値を渡す必要がありますcollection.length
。
この方法でパラメーターを渡すために、serializeDataメソッドを再定義するのが1つのオプションだと思います。
var ListView = Marionette.CompositeView.extend({
initialize: function () {
this.collection.on('reset', this.serializeData, this);
this.collection.on('remove', this.serializeData, this);
this.collection.on('add', this.serializeData, this);
},
serializeData: function () {
console.log(this.collection.length);
return {
has_tasks: this.collection.length > 0
};
},
// other codes
});
私が開始したときapp
、collection
はまだフェッチされていないので:
1.a )collection.legth = 0
2.b)テンプレートはhas_tasks = false
期待どおりに取得されます。
2.a)フェッチ後collection.length is > 0
、
2.b)が呼び出され、serializeData
それが配置
されます。2.c)テンプレートが保持されているため、テンプレートがレンダリングされていないようです。has_tasks = true
has_tasks = false
何か考えは2.c
?