微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

是否可以为集合动态定义比较器功能?

如何解决是否可以为集合动态定义比较器功能?

| 我有一个基本的收藏:
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”排序。 ;)     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。