如何对已渲染的集合进行排序?像 AngularJS 的 orderBy 指令

How do I sort a collection that has already been rendered? Like AngularJS's orderBy directive

如何对已呈现的数据集合进行排序或操作?

我注册了一个模板助手,其定义大致如下:

Template.home.helpers({
    posts: function() {
          return Posts.find({}, { sort: { createdAt: -1 } });
    }
});

它按最先出现的最新帖子对帖子进行排序。但是我想实现一个相反的功能;首先显示最早的帖子。

MeteorJS 的实现方式是什么?非常感谢任何 ideas/help。

我会使用会话变量来完成,就像这样:

首先,设置默认为降序显示:

Template.home.onRendered({
    Session.set("displayOrder", -1);
});

然后,在 html 的某处定义一个 link 以允许用户更改顺序:

<a href="#" id="sort">Change sort order</a>

然后定义一个事件以在点击时切换排序顺序

Template.home.events({
    'click #sort' : function () {
        var order = Session.get("displayOrder");
        var newOrder = -1 * order;
        Session.set("displayOrder", newOrder);
    }
});

然后改变你的助手,像这样:

Template.home.helpers({
    posts: function() {
      var displayOrder = Session.get("displayOrder")
      return Posts.find({}, { sort: { createdAt: displayOrder } });
    }
 });