Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将模型预先发送到集合_Javascript_Backbone.js - Fatal编程技术网

Javascript 将模型预先发送到集合

Javascript 将模型预先发送到集合,javascript,backbone.js,Javascript,Backbone.js,我正在寻找一种优雅的方式,在添加模型时将其预先添加到集合中。在主干源代码中,有一个unshift方法来实现这一点,但是将模型添加到集合中的add方法过于复杂,无法简单地扩展。我正在制作一个幻灯片,它依赖于照片和推特,应该总是在最上面显示最新的,最旧的,最后的。简化我的问题: 初始化应用程序,API调用返回: apple, banana, lemon 因此,苹果是最新的幻灯片。该集合的构建: apple, banana, lemon 间隔后,API调用检查是否有更新的结果,结果: orange

我正在寻找一种优雅的方式,在添加模型时将其预先添加到集合中。在主干源代码中,有一个
unshift
方法来实现这一点,但是将模型添加到集合中的
add
方法过于复杂,无法简单地扩展。我正在制作一个幻灯片,它依赖于照片和推特,应该总是在最上面显示最新的,最旧的,最后的。简化我的问题:

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

apple, banana, lemon
因此,苹果是最新的幻灯片。该集合的构建:

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

orange
集合附加模型:

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

API调用检查更多的结果:

pineapple, kiwi
集合逐个追加新模型:

((apple, banana, lemon), orange), pineapple, kiwi
因此,从新到旧,我的收藏如下:

((not so old, older, oldest), pretty new), brand new, new
这完全没有道理:)

当然,更改API响应可以让我的生活更轻松,但这目前不是一个选项;此外,这也不应该真的重要,因为响应中的项目顺序是new->old,这对我来说很好


我找不到一个现成的解决方案,我不想把主干源代码的一部分克隆到
unshift
新模型中,从而使事情变得过于复杂。建议?谢谢

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


取消移位的
如何不起作用?在文档“在集合的开头添加模型。采用与添加相同的选项”中,因为我没有手动将模型添加到集合中,所以我使用间隔从服务器获取json,主干将每个对象作为模型附加到集合中。当然,我可以干预并使用
unshift
,但这会使我的代码复杂化(也许我应该指出,我的API endpont不是我收藏的真实代表,它是一种“流式”收藏)谢谢!!不知道我怎么会在文件中忽略了这一点。问题已解决:
this.collection.comparator=function(model){return-model.get(“time”);}
对于那些在comparator上创建的反向代码无法工作的人,不要忘记在求反之前解析字符串<代码>函数(模型){return-Date.parse(model.get('created_at'))}