我正在寻找一种优雅的方式,在添加模型时将模型添加到集合中。在Backbone源代码中有一个unshift
方法可以做到这一点,但是用于将模型添加到集合的add
方法太复杂而不能简单地扩展。我正在构建一个依赖于照片和推文的幻灯片,并且应该始终显示最新的,最旧的最后一个。简化我的问题:
初始化app,API调用返回:
apple, banana, lemon
所以,苹果是最新的幻灯片。该系列已经建成:
apple, banana, lemon
间隔后,API调用检查是否有更新的水果,结果:
orange
Collection追加模型:
(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
个新模型来使问题复杂化。建议?谢谢!
答案 0 :(得分:5)
如果模型有某种与它们相关的日期或时间或者任何其他类型的排序(如果需要,您可以手动添加一个),您可以通过在集合中实现comparator
函数对集合进行排序。参见: