“未定义”我有一个CompositeView中和ItemViews如下(简化自己的看法版):Marionette.js:CompositeView中:getItemView总是返回在初始化
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
是否每次都存在,有什么我可以做,以避免需要此检查?
这只是一个猜测,但也许你已经完全从服务器获取之前传递给复合视图构造函数一个集合? – Ingro 2013-03-08 23:49:23
@Ingro,CollectionView正在从我的集合获取的'success:function()'创建。问题出现时收集完成。我期望在我的集合中有100个模型,这就是我所得到的,但'getItemView'被激发101次。谢谢您的意见。 – CREO 2013-03-09 00:03:22