【问题标题】:Meteor update template helper流星更新模板助手
【发布时间】:2015-01-05 05:11:00
【问题描述】:

如果我像这样在流星中设置模板助手:

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

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

【问题讨论】:

    标签: javascript meteor


    【解决方案1】:

    最简单的方法是使用全局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()
    

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

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

    要使上述代码正常工作,您可能需要将 reactive-var 包添加到您的流星应用程序中。

    【讨论】:

      猜你喜欢
      • 2015-07-12
      • 2015-08-13
      • 2015-04-15
      • 1970-01-01
      • 1970-01-01
      • 2015-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多