骨干集合获取不更新@ collection.length

问题描述:

我获取集合的前15个记录,并在单击按钮后为同一集合获取另外15个记录。第二次后,集合的长度是15而不是30.即使正在加载15个新记录,并且'add'事件完美工作。骨干集合获取不更新@ collection.length

代码的第一时间:

@collection.fetch 
    data: @filter 
    update: true 
    success: => 
    @onSuccessCollection() 

代码的第二时间:

loadMore: -> 
    @filter.skip = @collection.length 
    @collection.fetch 
    update: true 
    data: @filter, 
    success: => 
     @onSuccessCollection() 

成功回调(返回15第一次和15第二时间而30预计):

onSuccessCollection: -> 
    console.log 'onCollectionReset: collection.length: ', @collection.length 

我使用Backbone 0.9.10

您必须将标志remove设置为false。 “智能升级”有删除标志默认为真,所以当你只取15种型号,您的第一个15被删除(因此长度等于15):

// Smartly update a collection with a change set of models, adding, 
// removing, and merging as necessary. 
update: function(models, options) { 
    options = _.extend({add: true, merge: true, remove: true}, options); 

Source

+0

认真地容易...非常感谢!完美的作品。 – 2013-04-09 13:06:04

+0

@MichaelKoper最难的部分是从旧版本获取文档:) – Loamhoof 2013-04-09 13:06:46

+0

是的确的...浏览源代码是唯一的方法:) – 2013-04-09 13:17:26