如何对已渲染的集合进行排序?像 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 } });
}
});
如何对已呈现的数据集合进行排序或操作?
我注册了一个模板助手,其定义大致如下:
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 } });
}
});