如何对已渲染的数据集合进行排序或处理?

我注册了一个模板助手,它的定义大致相同:

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


按最新出现的帖子排序。但是我想实现一种可以逆转这种情况的功能;首先显示最早的帖子。

MeteorJS的处理方式是什么?任何想法/帮助深表感谢。

最佳答案

我将使用会话变量来完成此操作,如下所示:

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

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


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

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

10-08 05:15