我有一个名为Topics
的主干集合,在我的应用程序的一个实例中,我希望按照我称为view_count
的属性进行排序。
Topics
集合的另一个实例我希望按字母顺序按name
排序。
目前,在集合上,我有一个比较器:
comparator: (topic) ->
return topic.get('view_count') * -1
当我希望按name
而不是view_count
对集合进行排序时,覆盖或更改比较器/排序选项的优雅方法是什么?我试图在主题集合bu的每个初始化上声明比较器函数,但似乎没有正常工作。
答案 0 :(得分:1)
将您的收藏更改为:
var Topics = Backbone.Collection.extend({
initialize: function(options) {
this.sortProperty = options.sortProperty;
},
comparator: function(topic) {
if(this.sortProperty == "view_count")
return topic.get("view_count") * -1;
else
return topic.get("name");
}
});
然后当你实例化你的收藏时:
var topics1 = new Topics({sortProperty : "view_count"});
var topics2 = new Topics({sortProperty : "name"});
您还可以在使用以下命令初始化集合后更改排序属性:
topics1.sortProperty = "name";