Backbone.js:由于Collection.fetch()而触发一次的事件?

时间:2014-03-26 21:23:18

标签: backbone.js

我有一个可以收听'添加'集合上的事件,它调用render()方法:

initialize: function() {
  this.listenTo(myCollection, 'add', this.render);
  myCollection.fetch();
}

但是render()方法被多次调用。有没有办法为"批量加载"?

调用render()方法

1 个答案:

答案 0 :(得分:0)

杰克是对的。为了检测集合的批量加载,您需要监听“重置”事件并将{reset:true}选项传递给集合的fetch方法。这是一个示例代码:

    var SomeModel = Backbone.Model.extend({});

    var SomeCollection = Backbone.Collection.extend({

        model: SomeModel,

        localStorage: new Backbone.LocalStorage('test')

    });

    var someCollection = new SomeCollection();

    var SomeView = Backbone.View.extend({

        initialize: function() {
            this.listenTo(someCollection, 'reset', this.render);
        },

        render: function() {
            console.log(someCollection.toJSON());
        }

    });

    var someView = new SomeView();

    someCollection.fetch({reset:true});

顺便说一句,我检查确保在收集完成后触发'重置'事件。