2015-12-14 2 views
0

Я создаю пользовательский интерфейс, который дает пользователям возможность фильтровать результаты на основе поля фильтра, которое они в настоящее время используют. В настоящее время это все в один единый пользовательский интерфейс и структурирована следующим образом: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.

+0

Вы можете использовать переменную, используя ['Session'] (http://docs.meteor.com/#/full/session). –

+1

Я специально не хочу использовать 'Session', поскольку я могу повторно использовать этот шаблон в разных местах, и сессия будет глобальной. Установка этого в соответствии с приведенным ниже ответом Кертиса работает очень хорошо. – Hans

ответ

1

Если вы встраивание filterTemplate внутри clientList шаблона вы можете передать данные, такие как:

{{> filterTemplate filterDictionary=filterDictionary}} 

Где filterDictionary шаблон помощник для clientList. Если он не встроен в другой шаблон, вам придется использовать переменные Session.

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