Backbonejs集合改变排序顺序?

时间:2011-05-20 03:02:32

标签: javascript sorting backbone.js

如何在骨干集合初始化后更改骨干集合的排序顺序?

试过这个:不起作用

    collection.comparator = function () {
      // new function
    }
    collectionObject.sort()

2 个答案:

答案 0 :(得分:3)

我认为您没有正确定义比较器。如果定义比较器,对象将按正确的顺序插入到集合中。

以下是一个示例,您可以在装有骨干的网站上运行firebug:

var Chapter  = Backbone.Model;
var chapters = new Backbone.Collection;

chapters.comparator = function(chapter) { 
  return chapter.get("page");
};

chapters.add(new Chapter({page: 9, title: "The End"}));
chapters.add(new Chapter({page: 5, title: "The Middle"}));
chapters.add(new Chapter({page: 1, title: "The Beginning"}));

chapters.pluck('title');

# OUTPUT
# ["The Beginning", "The Middle", "The End"]

注意比较器如何返回存储在每章的页面属性中的值。 Backbone的集合排序就像使用字符串或整数的sortBy,并且不遵循传统的-1,0,1比较器方法。

答案 1 :(得分:2)

如果你在正确的集合上调用sort,它应该可以工作:

collection.comparator = function (item) {
  return item.get('field');
};

collection.sort();