麻烦/流星分类
Trouble w/ Meteor Sorting
我正在尝试在列表上方添加一个简单的下拉控件,以便我可以按 "created" 或 "title" 对其进行排序。
列表模板名为 posts_list.html
。在它的辅助 .js 文件中,我有:
posts: function () {
var sortCriteria = Session.get("sortCriteria") || {};
return Posts.find({},{sort: {sortCriteria: 1}});
}
然后,我将列表抽象到另一个模板中。从这里我在 helper.js
中有以下点击事件跟踪器
"click": function () {
// console.log(document.activeElement.id);
Session.set("sortCriteria", document.activeElement.id);
// Router.go('history');
Router.render('profile');
}
在这里我可以确认正确的排序条件已写入会话。但是,我无法刷新页面。可见页面上的集合永远不会重新排序。
令人沮丧。有什么想法吗?
谢谢!
您不能将变量用作对象字面量中的键。试一试:
posts: function() {
var sortCriteria = Session.get('sortCriteria');
var options = {};
if (sortCriteria) {
options.sort = {};
options.sort[sortCriteria] = 1;
}
return Posts.find({}, options);
}
另请参阅 common mistakes 的 "Variables as keys" 部分。
非常感谢。请注意,我在下面注释掉了代码以显示我提取的内容。如果我需要一个真正的动态选项,而不是下面的简单二进制文件,我会坚持使用 "var options" 方法。我最终选择的是:
Template.postList.helpers({
posts: function () {
//var options = {};
if (Session.get("post-list-sort")) {
/*options.sort = {};
if (Session.get("post-list-sort") == "Asc") {
options.sort['created'] = 1;
} else {
options.sort['created'] = -1;
}*/
//return hunts.find({}, options);}
console.log(Session.get("hunt-list-sort"));
if (Session.get("hunt-list-sort") == "Asc") {
return Hunts.find({}, {sort: {title: 1}});
}
else {
return Hunts.find({}, {sort: {title: -1}});
};
}
}
});
我正在尝试在列表上方添加一个简单的下拉控件,以便我可以按 "created" 或 "title" 对其进行排序。
列表模板名为 posts_list.html
。在它的辅助 .js 文件中,我有:
posts: function () {
var sortCriteria = Session.get("sortCriteria") || {};
return Posts.find({},{sort: {sortCriteria: 1}});
}
然后,我将列表抽象到另一个模板中。从这里我在 helper.js
"click": function () {
// console.log(document.activeElement.id);
Session.set("sortCriteria", document.activeElement.id);
// Router.go('history');
Router.render('profile');
}
在这里我可以确认正确的排序条件已写入会话。但是,我无法刷新页面。可见页面上的集合永远不会重新排序。
令人沮丧。有什么想法吗?
谢谢!
您不能将变量用作对象字面量中的键。试一试:
posts: function() {
var sortCriteria = Session.get('sortCriteria');
var options = {};
if (sortCriteria) {
options.sort = {};
options.sort[sortCriteria] = 1;
}
return Posts.find({}, options);
}
另请参阅 common mistakes 的 "Variables as keys" 部分。
非常感谢。请注意,我在下面注释掉了代码以显示我提取的内容。如果我需要一个真正的动态选项,而不是下面的简单二进制文件,我会坚持使用 "var options" 方法。我最终选择的是:
Template.postList.helpers({
posts: function () {
//var options = {};
if (Session.get("post-list-sort")) {
/*options.sort = {};
if (Session.get("post-list-sort") == "Asc") {
options.sort['created'] = 1;
} else {
options.sort['created'] = -1;
}*/
//return hunts.find({}, options);}
console.log(Session.get("hunt-list-sort"));
if (Session.get("hunt-list-sort") == "Asc") {
return Hunts.find({}, {sort: {title: 1}});
}
else {
return Hunts.find({}, {sort: {title: -1}});
};
}
}
});