我有一个基本的收藏品:
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();
})
不幸的是,这似乎不起作用。有关如何做到这一点的任何建议吗?
感谢。
答案 0 :(得分:6)
看起来你只做了一半你需要做的事情。你已经给它收集了它的比较器,但是你没有告诉它要求它自己。因此,您需要在呈现之前添加类似此语句的内容:
myCollection.sort();
请注意,这将触发reset
事件,该事件将被您绑定此事件的任何对象接收。如果您希望禁止触发该事件,您可以通过这种方式拨打电话:
myCollection.sort({silent: true});
希望这有帮助。
答案 1 :(得分:0)
我在寻找比较器问题的解决方案时发现了这一点。我想如果其他人发现这个问题,我会补充说,如果你的集合中的模型对比较器排序的属性有未定义的值,那么排序就不会发生。如果不需要,请确保在模型上使用默认值,并且您将按照它们排序。 ;)