将模型添加到集合中

Pho*_*uin 6 javascript backbone.js

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

初始化app,API调用返回:

apple, banana, lemon
Run Code Online (Sandbox Code Playgroud)

所以,苹果是最新的幻灯片.该系列是:

apple, banana, lemon
Run Code Online (Sandbox Code Playgroud)

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

orange
Run Code Online (Sandbox Code Playgroud)

收集附加模型:

(apple, banana, lemon), orange
Run Code Online (Sandbox Code Playgroud)

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

API调用检查更多水果:

pineapple, kiwi
Run Code Online (Sandbox Code Playgroud)

Collection逐个添加新模型:

((apple, banana, lemon), orange), pineapple, kiwi
Run Code Online (Sandbox Code Playgroud)

所以现在从新到旧,我的收藏看起来像这样:

((not so old, older, oldest), pretty new), brand new, new
Run Code Online (Sandbox Code Playgroud)

这绝对没有意义:)

当然,改变API响应可能会让我的生活变得更轻松,但目前这不是一个选择; 它也应该不重要,因为响应中的项目顺序是新的 - >旧的,这对我很好.

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

Tom*_*ess 5

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

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