Backbonejs 集合更改排序顺序?

发布于 2024-11-09 02:33:53 字数 170 浏览 0 评论 0原文

在初始化主干集合后,如何更改其排序顺序?

尝试过这个:不起作用

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

How do I change the sort order of a backbone collection after it has already been initialized?

Tried this: Doesn't work

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

神也荒唐 2024-11-16 02:33:53

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

下面是一个示例,您可以在加载了主干的站点上运行 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"]

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

I don't think you are defining the comparator correctly. If you define a comparator, objects will be inserted into the collection in the right order.

Here is an example you can just run through firebug on a site with backbone loaded:

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"]

Notice how the comparator returns the value stored in the page attribute of each chapter. Backbone's collection sorting acts like a sortBy which uses strings or ints, and doesnt follow a traditional -1,0,1 comparator approach.

他不在意 2024-11-16 02:33:53

如果您对正确的集合调用排序,它应该可以工作:

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

collection.sort();

It should work if you call sort on the correct collection:

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

collection.sort();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文