The Backbone.Collection object个代理Underscore's Collection.shuffle()
所以所有Backbone集合都有方法shuffle()
。
Underscore的shuffle工作正常:
如果我只想对下划线集合中的最后5个项目进行随机播放,可以使用slice()
来完成:
您还可以对Backbone Collection进行切片和随机播放:
但是对于一个fetch
来自数据库的多次fetch
项目的Backbone Collection,我似乎无法仅对最后一次a.models // say, [id:1, id:2, id:3]
a.fetch().done(function (data) {
return data = _.shuffle(data)
})
a.models // [id:1, id:2, id:3, id:4, id:5, id:6], still sorted
调用所提取的项目进行洗牌,因为该集合中的项目似乎按照提取的顺序排序,即使在切片后也是如此。
n
看来,在延迟对象内部进行排序不会以任何方式改变外部集合。
那么,如何在Backbone Collection的末尾只对{{1}}项进行排序?
答案 0 :(得分:0)
您可以使用parse函数来重新缓冲来自服务器的返回数据:
MyCollection.prototype.parse = function(resp){
return _.shuffle(resp);
};
myCollection.fetch();
答案 1 :(得分:0)
您可以使用随机比较器在项目添加到集合时随机播放。
comparator: function(a) {
var rand = _.random(0, 1000);
a.set({rand: rand});
return rand;
}