如何对已渲染的数据集合进行排序或处理?
我注册了一个模板助手,它的定义大致相同:
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 } });
}
});