Метеор: есть ли реактивная область действия для каждого шаблона?
m рендеринг одного и того же шаблона Handlebars в нескольких (произвольно нескольких) местах на одной странице. Внутри каждого шаблона я хочу, чтобы кнопка переключала видимость div. Когда я сохраняю это состояние сSession.set
нажатие одной кнопки, очевидно, переключает все элементы div во всех экземплярах шаблона, что нежелательно.
Я мог бы сохранить состояние в контексте данных экземпляра шаблона (который связан сthis.data
вTemplate.myTemplate.rendered
а такжеTemplate.myTemplate.created
обратные вызовы), но есть две проблемы с этим.
this.data
ISN»t реактивный источник данных, поэтому не будет распространяться на divЯ нене имеет доступа к экземпляру шаблона вTemplate.myTemplate.events
(как обсуждено наметеор-ядро)Наконец, я мог как-то сохранить его в коллекцию. Но как мне однозначно определить состояние для каждого отображаемого шаблона? Также может быть хакерский путь с jQuery, но этоЯ не хочу разрабатывать приложения Meteor, которые должны работать с реактивными шаблонами. Особенно, когда этот шаблон становится более сложным.
Я что-то упустил или действительно нет эквивалента AngularJS 'контроллеры, которые проходят мимо$scope
для каждого экземпляра шаблона?
ОбновитьЯ думал о чем-то вроде этого.
template.html:
content
client.js:
Template.jsonObject.hidden = function(){
var ret = "";
if (this._hidden) {
ret = "hidden";
}
return ret;
};
Template.jsonObject.events({
'click input' : function(event, template){
template.data._hidden = true;
}
});