我有一个Backbone集合,我正在获取并呈现以下方式:
var View = Backbone.View.extend({
initialize : function(options){
var self = this;
this.template = _.template(Index);
this.collection = new WineCollection();
this.collection.url = ApiConfig.winetards.getWineList;
this.collection.on("reset", function(){self.render()});
return this;
}
在某些时候,wineList集合将为空。如何触发“重置”,然后在结果集为空时调用渲染?
答案 0 :(得分:1)
您有两种选择 - 在View或Collection中编写逻辑。如果应用程序的其他部分在集合为空时关注,请在集合中执行此操作。否则它可能属于View。
除非您直接编辑收藏集models
数组,否则收藏只能在reset
或remove
事件后变为。您可以收听这些事件并检查空集合。
var View = Backbone.View.extend({
initialize : function(options){
this.listenTo(this.collection, 'remove reset', this.renderIfEmpty, this);
},
renderIfEmpty: function() {
if(this.collection.isEmpty()) {
this.render();
}
}
}
var WineList = Backbone.Collection.extend({
initialize: function() {
this.on('remove reset', this.checkEmpty);
// If you want to trigger an event when an empty collection is created:
this.checkEmpty();
},
checkEmpty: function() {
if(this.isEmpty()) {
this.trigger('emptied', this)
}
}
})