0

コレクションの最初の 15 レコードを取得し、ボタンをクリックした後、同じコレクションの別の 15 レコードを取得します。2 回目以降、コレクションの長さは 30 ではなく 15 になります。15 の新しいレコードがロードされ、「追加」イベントは完全に機能しますが。

初めてのコード:

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

2回目のコード:

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

成功のコールバック (最初は 15 を返し、2 回目は 15 を返しますが、30 が期待されます):

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

バックボーン0.9.10を使用しています

4

1 に答える 1

2

フラグremoveを false に設定する必要があります。「スマート アップデート」の remove フラグのデフォルトは 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 に答える