我有一个主干和下划线的应用程序。
我已经看过这个问题,但我没有解决我的问题,因为有点不同:
Sorting Backbone Collections
Backbone/Underscore sortBy is not sorting collection
我的问题是:我在视图中有一个集合,我想按字段顺序对其进行排序,然后将此集合打印到模板中。
我试过这个,但不能使用下划线:
this.hotels.models = _(this.hotels.models).sortBy("order");
$(this.el).html(this.template({hotels: this.hotels.models}));
如何对我的集合(模型)进行排序并在打印后输入模板? 我的代码没有对我的数组进行排序。
答案 0 :(得分:7)
models
数组是一个Model对象数组,其属性存储在model.attributes
中。包装数组并调用sortBy
假定正在排序的对象是普通对象,并且该属性可以直接访问为model.{attribute}
。
为了让它做你想做的事,你可以传递sortBy
比较器函数get
你想要的属性:
this.hotels.models = _(this.hotels.models).sortBy(function(model) {
return model.get("order");
});
然而,这就是Backbone在Collection类中已经做过的事情。要使用内置比较器,只需将Collection的comparator
属性设置为要对其进行排序的Model属性的名称。
示例:
this.hotels.comparator = "order";
this.hotels.sort();
$(this.el).html(this.template({hotels: this.hotels.models}));