问题描述
|
我有一个基本的收藏:
myCollection = Backbone.Collection.extend({
model: myModel
url: \'/theurl\',initialize: function(){
this.fetch();
})
})
初始化后,集合将接收按日期排序的项目。
我希望能够使用另一个模型属性(名称,等级等)动态地对集合进行重新排序。
在与集合关联的视图中,我试图将click事件绑定到这样的回调:
reorderByName: function(){
myCollection.comparator = function(item){
return item.get(\'name\');
});
this.render();
})
不幸的是,这似乎不起作用。关于我该如何做的任何建议?
谢谢。
解决方法
看来您只完成了所需要做的一半。您已经为集合提供了比较器,但是您尚未告诉它求助于自己。因此,您需要在渲染之前添加类似以下语句的内容:
myCollection.sort();
请注意,这将触发一个reset
事件,该事件绑定到的任何对象都将接收该事件。如果您希望抑制触发该事件,则可以通过以下方式进行调用:
myCollection.sort({silent: true});
希望这可以帮助。
,我在寻找自己的比较器问题的解决方案时发现了这一点。我想我想补充一下,以防其他人发现此问题,如果您的集合中的模型具有用于比较器排序的属性的未定义值,则排序不会发生。如果不需要默认值,请确保在模型上使用默认值,并且按照“ \ em”排序。 ;)