我使用骨干的集合模型在骨干视图上显示字符串的排序列表。这是模型和比较器:
var MenuItems = Backbone.Collection.extend({
comparator: function (a, b) {
if (a.get('name') < b.get('name')) {
return 1;
} else if (b.get('name') > a.get('name')) {
return -1;
}
},
model: MenuItem,
url: '/items'
});
运行代码时,只对列表中十二个项目中的前六个进行排序,其余项目仍未排序。使用comparator: 'name'
时,列表已完全排序,但使用函数时会出现此问题。
任何人都知道为什么会发生这种情况?这可能是一个Backbone bug吗?我使用的是Backbone 1.1.0
答案 0 :(得分:4)
这是一个有效的代码。
var MenuItems = Backbone.Collection.extend({
comparator: function (a, b) {
if (a.get('name') < b.get('name')) {
return -1;
} else if (a.get('name') > b.get('name')) {
return 1;
}
}
});
这是jsfiddle with output,因此您可以比较http://jsfiddle.net/ek44Z/2/
主要问题在于功能内容。您需要在-1
语句中返回if
,并在a
中比较b
和else if
,然后返回1
。基本上你的else if
从未被调用过。
有一个好的编码。