2016-06-01 2 views
0

Вместо того, чтобы загружать новый шаблон, есть ли способ заставить Meteor инициировать итерацию (используя {{#each}}) массива в Meteor? Например, если пользователь выбирает значение в селекторе pull down, чтобы затем инициировать Meteor для итерации по массиву внутри этого шаблона, чтобы заполнить другой список селекторов, а не загружать весь новый шаблон с новым списком селекторов.Инициировать итерацию шаблона в Meteor

Скажем, это в шаблоне:

. 
. 
. 
<form class="input-field col s6 card-selector"> 
     <select multiple"> 
      <option value="" disabled selected>Select Students</option> 
      {{#each StudentList1}} 
       <option value= '{{FullName}}'>{{formatName FullName}} ({{Level}}) {{RoomWk1}}</option> 
      {{/each}} 
     </select> 
</form> 
. 
. 
. 

Когда пользователь выбирает значение в другой селектор в этом шаблоне:

<select class="week-selector"> 
     <option value="" disabled selected>Week</option> 
     <option value="Week1">Week 1</option> 
     <option value="Week2">Week 2</option> 
     <option value="Week3">Week 3</option> 
     <option value="Week4">Week 4</option> 
     <option value="Week5">Week 5</option> 
</select> 

это заставит повторение первого #each до:

<form class="input-field col s6 card-selector"> 
    <select multiple"> 
     <option value="" disabled selected>Select Students</option> 
     {{#each StudentList1}} 
      <option value= '{{FullName}}'>{{formatName FullName}} ({{Level}}) {{RoomWk2}}</option> 
     {{/each}} 
    </select> 
</form> 

Это было бы более эффективно, чем загрузка нового шаблона, для значений мультиселектора.

ответ

1

Сессии реагируют, и вы можете достичь этого, используя сеансы (проверьте, есть ли у вас пакет сеансов).

//we don't want the session value from the previous search/events 
Template.templateName.onRendered(function(){ 
    Session.set('sessionName', undefined); 
}); 

//I'd probably use onDestroyed instead of onRendered 
Template.templateName.onDestroyed(function(){ 
    Session.set('sessionName', undefined); 
}); 

//template events 
'change .week-selector': function(){ 
    var selected = $('.week-selector').find(":selected").text(); 
    Session.set('sessionName', selected) 
} 

//template helper 
StudentList1: function(){ 
    var session = Session.get('sessionName'); 
    if(session !== undefined){ 
     //return some documents using the session value in your find() 
    } else { 
     //return documents without session value 
    } 
} 

EDIT: Я нашел .text() выбранного варианта в случае, но вы можете вернуть значение или делать все, что вы хотите с найденным значением/текст.

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