Backbone集合未能删除所有给定的模型

时间:2015-11-25 06:15:15

标签: javascript backbone.js coffeescript backbone-collections

在获取集合后,我在最后添加“假”模型,以使我的flex网格正常工作。对这个解决方案不满意但找不到更好的解决方案。

我想支持将更多模型加载到集合中。因此,在同步时,我删除旧的假模型(否则最终会在集合的中间),然后在最后重新添加它们。

onSync: ->
  modelsToRemove = @where({id: 0})
  console.log modelsToRemove, modelsToRemove.length
  // this prints:
  // [child, child, child, child, child]  5
  // which is expected
  @remove(modelsToRemove)

  modelsToRemove2 = @where({id: 0})
  console.log modelsToRemove2, modelsToRemove2.length
  // this should print
  // [] 0
  // right?
  // but it prints:
  // [child]  1
  // and the cid of the child is actually present in the first list...

  @add({}) for [1..@fakeCount]

remove如何删除除1?

以外的所有假模型

编辑:使用cid s使其正常工作。

  modelsToRemove = _.map @where({id: 0}), (m, i) -> { cid: m.cid }
  @remove(modelsToRemove)
  @add({}) for [1..@fakeCount]

这个问题似乎与几个模型完全相同,除了cid?

1 个答案:

答案 0 :(得分:0)

所有这些假模型具有相同的id的事实破坏了#get

在Github Issues上给我的解决方案是为他们提供不同的ID,以及一个fake属性。