6

我正在寻找一种优雅的方式在添加模型时将模型添加到集合中。在 Backbone 源代码中,有一种unshift方法可以做到这一点,但是add将模型添加到集合中的方法过于复杂,无法简单地扩展。我正在构建一个依赖于照片和推文的幻灯片放映,并且应该始终在顶部显示最新的,最后显示最旧的。简化我的问题:

初始化应用,API调用返回:

apple, banana, lemon

所以,苹果是最新的幻灯片。该集合是建立的:

apple, banana, lemon

间隔后,API调用检查是否有更新的水果,结果:

orange

集合追加模型:

(apple, banana, lemon), orange

那不是我想要的。橙子是最新的水果,苹果紧随其后。但是,在这种情况下,我可以在添加之前反转我的初始集合,并在绘制幻灯片时重新反转。现在,事情变得更复杂了(我添加了括号来澄清):

API 调用检查更多水果:

pineapple, kiwi

Collection 一一追加新模型:

((apple, banana, lemon), orange), pineapple, kiwi

所以现在从新到旧,我的收藏是这样的:

((not so old, older, oldest), pretty new), brand new, new

这绝对没有意义:)

当然,更改 API 响应可以让我的生活更轻松,但目前这不是一个选择;另外,这并不重要,因为响应中的项目顺序是新的-> 旧的,这对我来说很好。

我找不到一个开箱即用的解决方案,我不想通过将部分主干源克隆到unshift新模型来使事情变得过于复杂。建议?谢谢!

4

1 回答 1

5

如果模型具有与它们相关联的某种日期或时间,或者确实有任何其他类型的排序(如果需要,您可以手动添加一个),您可以通过在集合中实现comparator函数来对集合进行排序。看:

http://backbonejs.org/#Collection-comparator

于 2012-11-01T14:19:45.007 回答