2015-01-04 2 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() 

и в вашем случае зацепить экземпляр шаблона будет второй аргумент (Efter объект события):

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

Для выше кода для работы вам, вероятно, потребуется добавить reactive-var пакет в ваше приложение метеоритов.

Смежные вопросы