当用户单击按钮时,我正在尝试对一个集合进行排序。第一次单击时,它可以按预期工作,但是当我再次单击它时,什么也没发生。

在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}

10-04 22:25
查看更多