0

我获取集合的前 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

4

1 回答 1

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

来源

于 2013-04-09T12:13:19.547 回答