3

有没有办法将两种情况分开来渲染emptyView?
1、CollectionView刚创建的时候。集合仍然是空的
2. 获取集合后但数据为空。

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

});
4

1 回答 1

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
    }
}
于 2013-03-11T03:15:04.400 回答