【问题标题】:Backbone collection fetch doesnt update @collection.length骨干集合提取不更新@collection.length
【发布时间】:2013-04-09 10:15:10
【问题描述】:

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

【问题讨论】:

    标签: javascript backbone.js coffeescript


    【解决方案1】:

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

    【讨论】:

    • 说真的很容易...非常感谢伙计!完美运行。
    • @MichaelKoper 最困难的部分是从旧版本中获取文档 :)
    • @MichaelKoper 当然可以,但是更改日志有时可能会避免您的这种痛苦;)
    猜你喜欢
    • 2012-07-31
    • 1970-01-01
    • 1970-01-01
    • 2014-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多