如何对已呈现的集合进行排序?比如angularjs的orderBy指令

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

本文关键字:排序 比如 angularjs 指令 orderBy 集合      更新时间:2023-09-26

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

我注册了一个模板助手,它的定义或多或少像:

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