Backbone集合提取不会更新@ collection.length

时间:2013-04-09 10:15:11

标签: javascript backbone.js coffeescript

我获取了一个集合的前15条记录,点击一个按钮后,我获取了同一集合的另外15条记录。在第二次之后,集合的长度为15而不是30.即使正在加载15条新记录并且“添加”事件也能完美运行。

第一次代码:

@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

1 个答案:

答案 0 :(得分:2)

您必须将标记remove设置为false。 “智能更新”将删除标志默认设置为true,因此当您仅提取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