javascript - 主干集合获取不会更新@collection.length

标签 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

最佳答案

您必须将标记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

关于javascript - 主干集合获取不会更新@collection.length,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15899244/

相关文章:

javascript - jQuery 隐藏 nextall 元素

javascript - 从函数返回多个值

javascript - Adobe aem cq6.3 不支持backbone.js 的方法、destroy 和 fetch

javascript - 在 Backbone.js 中,如何阻止事件传递到父 View ?

javascript - module.exports 和外部范围

javascript - 您可以在 Firefox 上暂停离线音频上下文吗?

javascript - 在js中绘制多个多边形

Backbone.js model.save() - 正确的服务器响应

node.js - 调试 mocha 测试的阻力最小的途径是什么?

Node.js 和 Coffeescript——使用 Mocha 和 Zombie 测试应用程序