2015-01-04 130 views
0

如果我有像這樣的流星設置模板助手:流星更新模板幫手

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

我怎樣才能更改訂閱的事件(比如點擊)之後。例如,如何在點擊事件後反轉排序?

回答

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() 

,並在事件掛鉤的模板實例將成爲第二個參數(至關重大的事件對象):

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

對於上述代碼工作你可能需要添加reactive-var包到你的流星應用程序。