「未定義」我有一個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