Backbone.js 集合无法删除所有给定模型

uubf1zoe  于 2022-11-10  发布在  其他
关注(0)|答案(1)|浏览(140)

在获取集合后,我在最后添加“假”模型,以使我的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之外,几款车型完全相同?

rsaldnfx

rsaldnfx1#

事实上,所有这些假模型都有相同的id打破了#get
在Github问题上给我的解决方案是给他们不同的id,和一个fake属性。

相关问题