私は次のようにcompositeViewとItemViewsを持っています(私のビューの簡略化されたバージョン):
testView1 = Backbone.Marionette.ItemView.extend({
template: '#test-view-1'
}
testView2 = Backbone.Marionette.ItemView.extend({
template: '#test-view-2'
}
TestView = Backbone.Marionette.CompositeView.extend({
template: '#test-template',
itemViewContainer:'tbody',
itemView: testView1,
getItemView: function(item){
console.log('item'); //<==== FIRED 101 TIMES
if (!item) { //<==== WHY DO I NEED THIS
return testView1; //<==== WHY DO I NEED THIS
} else {
return ('testView' + item.id);
}
}
});
問題は、CompositeViewが初期化されるときに、getItemView
コードを渡す前にコードを実行item
してエラーを生成することです。追加した条件がないif
と、ビューが壊れます。
複合ビューに渡される私のコレクションには100個のモデルが含まれており、console.log('item');
が101回起動され、最初は常に「未定義」であり、残りの100回は予想どおり100個のモデルです。
私の質問は、なぜitem
毎回存在するかどうかをチェックする必要があり、このチェックを必要としないようにするために何かできることがあるのかということです。