2

我在主干和下划线中有一个应用程序。我已经看到了这个问题,但我还没有解决我的问题,因为有点不同:
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}));

如何对我的集合(模型)进行排序并在将其打印为 inot 模板后?我的代码没有对我的数组进行排序。

4

1 回答 1

7

models数组是一个模型对象数组,其属性存储在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}));
于 2013-08-01T14:37:23.253 回答