2014-09-21 49 views
0

我有这个集合mixin,我用来尝试继续拉多个页面的数据到集合在一起,但我认为它会重置自己,当它检测到新的传递到获取的选项,因为我只是结束了最后一页的数据。一次获取多个页面的数据与骨干集合

var Pageable = { 
    fetch: function(options) { 
    var originalSuccess = options.success; 
    options.data.page = 1; 

    var doFetch = function(options) { 
     var beforeLength = this.length; 

     options.data = _.extend({page: options.data.page, per_page:100}, options.data); 
     options.success = function(col, res, opts) { 
     if (this.length === beforeLength) return originalSuccess(col, res, opts); 
     options.data.page++; 
     doFetch(options); 
     }.bind(this); 

     return Collection.prototype.fetch.call(this, options); 
    }.bind(this); 

    return doFetch(options); 
    } 
}; 

我觉得从这个你得到什么,我试图做主旨,任何想法,如何去了解呢?

回答

0

想通了,你需要添加选项告诉收集不删除,而只是添加/更新...

var Pageable = { 
    fetch: function(options) { 
    var originalSuccess = options.success; 

    _.extend(options, { 
     add: true,   // <---- 
     remove: false,  // <---- 
     update: true,  // <---- 
     data: { 
     page: 1, 
     per_page:100 
     } 
    }); 

    var doFetch = function(options) { 
     var beforeLength = this.length; 

     options.success = function(col, res, opts) { 
     console.log(this.length, beforeLength); 
     if (this.length === beforeLength) return originalSuccess(col, res, opts); 
     options.data.page++; 
     doFetch(options); 
     }.bind(this); 

     return Collection.prototype.fetch.call(this, options); 
    }.bind(this); 

    return doFetch(options); 
    } 
};