在集合的空结果集上触发“重置”主干事件

时间:2014-12-18 11:34:36

标签: javascript ajax backbone.js

我有一个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集合将为空。如何触发“重置”,然后在结果集为空时调用渲染?

1 个答案:

答案 0 :(得分:1)

您有两种选择 - 在View或Collection中编写逻辑。如果应用程序的其他部分在集合为空时关注,请在集合中执行此操作。否则它可能属于View。

除非您直接编辑收藏集models数组,否则收藏只能在resetremove事件后变为。您可以收听这些事件并检查空集合。

在视图中

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