流星更新模板助手

时间:2015-01-04 19:02:17

标签: javascript meteor

如果我在meteor中设置了模板助手,那么:

Template.leaderboard.helpers({
  players: function() {
    return Players.find({}, { sort: { score: -1, name: 1 } });
  });

如何在事件发生后更改订阅(例如点击)。例如,如何在单击事件后反转排序?

1 个答案:

答案 0 :(得分:3)

最简单的方法是使用全局Session对象:

Session.setDefault('order', 1);

Template.leaderboard.helpers({
  players: function() {
    return Players.find({}, { sort: { score: Session.get('order'), name: 1 } });
  }
});

现在在相应的事件挂钩中,你可以像这样切换顺序:

Template.leaderboard.events({
  'click': function () {
    Session.set('order', - Session.get('order'));
  }
});

但是,如果您不想使用Session,还可以在模板实例命名空间中创建一个反应状态变量:

Template.leaderboard.created = function () {
  this.order = new ReactiveVar(1);
}

要从帮助程序中访问它,您可以使用:

Template.instance().order.get()

并且在您的事件挂钩中,模板实例将是第二个参数(efter事件对象):

Template.leaderboard.events({
  'click': function (e, t) {
    t.order.set( - t.order.get() );
  }
});

要使上述代码生效,您可能需要将reactive-var包添加到您的meteor应用程序中。