Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Backbone.js 主干排序收集阵列_Backbone.js_Underscore.js - Fatal编程技术网

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}));

感谢这解决了问题,我真的不明白如何使用比较器。。。嗯,你能举个简单的例子吗+谢谢你的回答!清洁溶液。