当用户单击按钮时,我正在尝试对一个集合进行排序。第一次单击时,它可以按预期工作,但是当我再次单击它时,什么也没发生。
在meteor.startup上,我按“日期”对我的收藏进行排序。当用户单击类别按钮时,它将排序方式更改为“类别”,然后我尝试处理同一按钮的每次单击,以将排序方式从升序更改为降序。
以下是处理用户点击的代码段:
(我几乎可以确定问题出在这里)
layout.js
Template.layout.events({
'click #cat': function(event) {
event.preventDefault();
//sets the session to a variable
var sortBy = Session.get('sort_by');
if (sortBy.category == 'desc') {
return Session.set('sort_by', {
category: 'asc'
});
} else {
return Session.set('sort_by', {
category: 'desc'
});
}
}
})
这是我的router.js:
Router.configure({
layoutTemplate: 'layout',
waitOn: function() {
return Estagios.find({},{ sort: Session.get("sort_by")});
},
})
Publications.js
Meteor.publish('nestagios', function() {
return Estagios.find({});
})
这是我的main.js
Meteor.startup(function() {
Session.set("sort_by", {
date: -1,
});
});
谁能帮助我找出问题所在?谢谢。
最佳答案
由于您只是在切换排序方向,因此可以将事件处理程序简化为:
Template.layout.events({
'click #cat': function(event) {
event.preventDefault();
Session.set('sort_by',{category: -Session.get('sort_by').category});
});
会话变量的计算结果为
{category: 1}
或{category: -1}