有没有一种方法可以分开两种情况来呈现emptyView?
1.刚创建CollectionView时。集合仍为空
2.在获取收集后但数据为空。

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

});

最佳答案

这就是我过去所做的方式。将“emptyView”设置为加载 View ,然后在同步集合后,根据需要将“emptyView”设置为实际的EmptyView。我还在'onBeforeRender'中使用了它,如下面的示例所示,如果已经使用'EmptyView'渲染了 View ,则可能需要重新渲染它:

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
    }
}

07-24 09:52