Я создаю пользовательский интерфейс, который дает пользователям возможность фильтровать результаты на основе поля фильтра, которое они в настоящее время используют. В настоящее время это все в один единый пользовательский интерфейс и структурирована следующим образом:Meteor: Обмен переменной шаблона между шаблонами
Template.clientList.onCreated(function(){
var instance = this;
// filterDictionary manages the filter parameters.
instance.filterDictionary = new ReactiveDict();
instance.filterDictionary.set("filterName", null);
instance.filterDictionary.set("filterDate", null);
instance.filterDictionary.set("filterId", null);
// subscription management goes here, uses filterDictionary.
});
теперь я хочу, чтобы повторно использовать фильтр в другом шаблоне, и хотел бы, чтобы вставить его в шаблон ребенка. Поэтому это должно измениться примерно на следующее:
Template.filterTemplate.onCreated(function(){
var instance = this;
instance.filterDictionary = instance.canIAccessChildTemplates.filterDictionary;
// subscription management goes here, uses filterDictionary.
// subscriptions will also use parameters specific to the template they are in.
});
Каков наилучший способ доступа к данным между детьми? Я действительно не хочу, чтобы это была глобальная переменная, поскольку возможно, что вы можете использовать эти два элемента ui рядом друг с другом, то есть отображать 2 представления одновременно, и они не должны применять свои изменения к тому же ReactiveDict.
Вы можете использовать переменную, используя ['Session'] (http://docs.meteor.com/#/full/session). –
Я специально не хочу использовать 'Session', поскольку я могу повторно использовать этот шаблон в разных местах, и сессия будет глобальной. Установка этого в соответствии с приведенным ниже ответом Кертиса работает очень хорошо. – Hans