如何替换Backbone.Collection中的模型?

Tre*_*ham 8 backbone.js

假设我有Backbone.Collection三个型号.我想替换中间的一个,将第一个和第三个模型保持在当前位置.(假设没有comparator.)我该怎么做?

dca*_*son 18

这是一个很好的问题,今天仍然有用,所以值得回答.

当您提出问题时,我的答案中使用的功能可能不存在,但现在执行此操作非常简单.

无论如何,我们假设您的收藏已命名,myCollection并且已经存储了3个模型.让我们假设您有一个新模型newModel,您希望用它来替换集合中现有的中间模型.要替换中间模型,保持第一个和第三个模型不变,您可以这样做:

myCollection.remove(myCollection.at(1));

myCollection.add(newModel, {at: 1});
Run Code Online (Sandbox Code Playgroud)

这将完全符合您的要求,并remove为已删除的模型和add替换事件引发事件,这也是您想要的.


Joh*_*lls 6

Backbone内置了一个简单的机制来处理这个问题

myCollection.add(newModel, {merge: true});

  • 合并和替换是不同的行为。OP询问如何更换。但是,我同意这个答案是有用的,并解决了另一个需求。赞成。 (2认同)
  • 我不同意.OP问了一个具体的问题,这个答案没有解决.此外,答案并没有说明它没有解决OP的原始问题.它可能会混淆其他读者.对于另一个问题,这将是一个很好的答案.Downvoted. (2认同)