2013-03-11 96 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

相关问题