У меня есть потребность в первый заселить набор отдельных элементов со значениями, например, так:Будет ли вспомогательный метеор, который считывает значение из элемента, автоматически будет повторно выполняться при изменении значения этого элемента?
<select class="jobLoc" id="date1Shift1JobLoc1" name="date1Shift1JobLoc1">
{{#each jobLocations}}
<option value={{jl_jobloc}}>{{jl_jobloc}}</option>
{{/each}}
</select>
... но затем обновить те (замена первоначального супернабор joblocs с подмножеством), когда другой, связанный выберите изменения элементов.
Помощник возвращает набор документов на основе значения, связанный выбор элемента, что-то вроде этого (псевдокода):
Template.tblScheduler.helpers({
jobLocations: function() {
var worker = $('#worker').val;
if (worker == '') {
return JobLocations.find(); // return all
} else {
return JobLocations.find({ jl_workerid: worker }); // a worker was selected; use it to return a subset
}
}
});
Когда шаблон первый вынесенное «date1Shift1JobLoc1Count» выбрать элемент заселен со всеми трудовыми книгами; однако, если выбран рабочий, параметры «date1Shift1JobLoc1Count» должны быть очищены, а затем заменены соответствующим подмножеством.
Вопрос в том, будет ли это работать автоматически, из-за того, что Метеор видит, что помощник полагается на значение элемента «#worker» select? Надеюсь, что так ... но ожидайте, что я надеюсь на слишком много. Если мои сомнения обоснованы, как я могу вернуть помощника для повторного запуска и шаблон для повторной рендеринга? Нужно ли мне это делать из обработчика событий шаблона, примерно так:
Template.tblScheduler.events({
"change #worker": function (event) {
// Is it possible to call the jobLocations helper from here?
}
});
? Или я должен сделать это «вручную» оттуда, что-то вроде (псевдокод):
Template.tblScheduler.events({
"change #worker": function (event) {
var worker = $('#worker').val;
var arrayOfDocs = Meteor.call('getJobLocsForWorker(worker))');
// assign the values in arrayOfDocs to the "date1Shift1JobLoc1" select element
}
});
Или есть другой способ?
Обратите внимание, что использование '= = 'в вашем коде будет соответствовать любому значению false, включая' 0', 'null' или' undefined'. –