2013-03-11 133 views
3

有沒有辦法將兩種情況分開來渲染emptyView?
1.剛創建CollectionView時。收集仍爲空
2.收集完成後,數據是空的。有沒有辦法來分開渲染emptyView的兩種情況?

_CollectionView = Backbone.Marionette.CollectionView.extend({ 
    emptyView: _EmptyView, 
    itemView: _ItemView, 
    initialize: function() { 
     this.collection = new Backbone.Collection(); 
     this.collection.fetch(); 
    },//initialize 

}); 

回答

2

這是我過去這樣做的方式。將您的'emptyView'設置爲您的加載視圖,然後在集合同步後,根據需要將'emptyView'設置爲您的實際EmptyView。我也用這「onBeforeRender」在下面你的例子可能需要在它已經被渲染的「EmptyView」重新渲染視圖:

emptyView: LoadingView, 
collectionEvents: { 
    'sync': 'onSync' 
}, 
onSync: function() { 
    if(this.collection.length === 0) { 
     this.emptyView = EmptyView; 
     //may need to call 'this.render();' here if already rendered 
    } 
} 
+0

這是好的,有益,因爲我不知道「collectionEvents」。 – 2013-03-12 02:20:54

+0

this.options.emptyView = EmptyView;爲我工作(因爲this.render()將最終調用Marionette.getOption,它將查找this.options對象中的emptyView參數。 – 2013-05-17 05:10:08

相關問題