Backbone.js 主干排序收集阵列
我有一个应用在主干和下划线。 我已经看到了这些问题,但我没有解决我的问题,因为有点不同:Backbone.js 主干排序收集阵列,backbone.js,underscore.js,Backbone.js,Underscore.js,我有一个应用在主干和下划线。 我已经看到了这些问题,但我没有解决我的问题,因为有点不同: 我的问题是:我在视图中有一个集合,我想按字段顺序对其排序,然后将此集合打印到模板中 我已经尝试过了,但无法使用下划线: this.hotels.models = _(this.hotels.models).sortBy("order"); $(this.el).html(this.template({hotels: this.hotels.models})); 如何对我的收藏(模型)进行排序并在模板中
我的问题是:我在视图中有一个集合,我想按字段顺序对其排序,然后将此集合打印到模板中 我已经尝试过了,但无法使用下划线:
this.hotels.models = _(this.hotels.models).sortBy("order");
$(this.el).html(this.template({hotels: this.hotels.models}));
如何对我的收藏(模型)进行排序并在模板中打印?
我的代码没有对数组进行排序。模型数组是一个模型对象数组,其属性存储在
Model.attributes
中。包装数组并调用sortBy
假定正在排序的对象是普通对象,并且属性可以作为model.{attribute}
直接访问
要让它执行您想要的操作,您可以通过sortBy
一个比较器函数传递get
s您想要的属性:
this.hotels.models = _(this.hotels.models).sortBy(function(model) {
return model.get("order");
});
然而,主干网在Collection类中已经做到了这一点。要使用内置的比较器,只需将集合的比较器
属性设置为要排序的模型属性的名称
例如:
this.hotels.comparator = "order";
this.hotels.sort();
$(this.el).html(this.template({hotels: this.hotels.models}));
感谢这解决了问题,我真的不明白如何使用比较器。。。嗯,你能举个简单的例子吗+谢谢你的回答!清洁溶液。