我需要將值傳遞給listView.template
以便了解有關collection.length
的模板。
我認爲一種選擇是重新定義serializeData方法以便以這種方式傳遞參數。CompositeView中的SerializeData
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
被調用,所以它把has_tasks = true
,
2.C)模板似乎沒有渲染,因爲它保持了has_tasks = false
任何想法,因爲2.c
?
發送hasTask的要點是顯示關於hasTask = false時的情況的模板部分。我應該改變一些東西嗎? IMH CompositeView模板不能訪問集合,只能訪問模型屬性。該物品可以訪問收藏。我對嗎? –
您可以通過您的複合視圖模板中的console.log(this)來檢查。因爲我不使用與你一樣的堆棧,所以我不確定你有什麼。 –
CompositeView有權訪問集合,但是'marionette.composed.view'呈現'model.attributes'沒有集合。 –