Вы должны использовать реактивную переменную (ReactiveVar, см. Документацию здесь ) для хранения currentDay вместо Session. ReactiveVar намного мощнее и надежнее, чем Session, особенно потому, что вы создаете их в функции onCreated
экземпляра Template.
Я советую вам заменить любое использование Session на ReactiveVar.
Вот пример кода для переменной currentDay:
Template.agendaPage.events({
'click .dateFilter': function(event) {
var bgclr;
var id = $(event.target).attr('data-index');
var allDays = Session.get('allDays');
Template.instance().currentDay.set(allDays[id]);
});
});
Template.agendaPage.helpers({
currentDay : function(){
return Template.instance().currentDay.get()
}
});
Template.agendaPage.onCreated(function(){
this.currentDay = new ReactiveVar(null);
});
Также, исходя из этого, вы должны использовать внешний css с css классами, содержащими ваши цвета (т.е. .active
class) и используйте оператор {{#if}}
, чтобы установить класс для элемента html, который активируется (<button>
)
Template.agendaPage.helpers({
isActive : function(element){
let currentDay = Template.instance().currentDay.get()
// do wathever logic you need based on the `element` variable passed as param
return true; // or false
}
});
<button class="{{#if (isActive this)}}active{{/if}}">
.active{
"background-color": "#0091FF"
}
Я не тестировал образцы кодов, не не стесняйтесь комментировать, если вам нужна дополнительная информация