Backbone.js 仅洗牌主干集合中的已提取项
代理,因此所有主干集合都具有方法shuffle 下划线的洗牌效果很好: 如果我只想洗牌下划线集合中的最后5项,可以使用slice: 您还可以对主干集合进行切片和洗牌: 但对于从数据库多次提取项目的主干集合,我似乎不能只洗牌上次提取调用提取的项目,因为集合中的项目似乎是按照提取顺序排序的,即使在片段洗牌之后也是如此Backbone.js 仅洗牌主干集合中的已提取项,backbone.js,Backbone.js,代理,因此所有主干集合都具有方法shuffle 下划线的洗牌效果很好: 如果我只想洗牌下划线集合中的最后5项,可以使用slice: 您还可以对主干集合进行切片和洗牌: 但对于从数据库多次提取项目的主干集合,我似乎不能只洗牌上次提取调用提取的项目,因为集合中的项目似乎是按照提取顺序排序的,即使在片段洗牌之后也是如此 a.models // say, [id:1, id:2, id:3] a.fetch().done(function (data) { return data = _.s
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个项目进行排序?您可以使用解析函数来洗牌从服务器返回的数据:
MyCollection.prototype.parse = function(resp){
return _.shuffle(resp);
};
myCollection.fetch();
您可以使用随机化比较器在将项目添加到集合中时对其进行洗牌
comparator: function(a) {
var rand = _.random(0, 1000);
a.set({rand: rand});
return rand;
}
fiddle:在提取的成功回调中对数据进行洗牌怎么样?那么您想洗牌或排序吗?@Jack您的意思是什么?示例中的.fetch.done回调?@Brian我看到您解决了您的问题,实际上我的意思是将成功回调传递给调用,类似于.fetch{成功:函数集合、响应、选项{….哦,快照,我没有想到解析级别的洗牌。这看起来很有希望…现在将测试它。这是出乎意料的天才。谢谢!