На сегодняшний день самым простым способом охвата событий в шаблонах Blaze является определение шаблонов на уровне, на котором вам нужно перехватывать события.
Если у вас есть:
<template name="companyEmails">
{{#each companyEmail}}
<input type="text" class="form-control valid" id="companyEmail" name="companyEmail[]">
{{/each}}
</template>
Затем, если вы приложите обработчик события к companyEmails шаблона вы должны выяснить, какие input
была изменена.
Если изменить этот шаблон для:
<template name="companyEmails">
{{#each companyEmail}}
{{> oneCompanyEmail}}
{{/each}}
</template>
<template name="oneCompanyEmail">
<input type="text" class="form-control valid" id="companyEmail" name="companyEmail[]">
</template>
Затем вы можете прикрепить обработчик события к шаблону более низкого уровня и гарантировать, что вы получаете правильное событие на нужный объект с соответствующим контекстом данных :
Template.oneCompanyEmail.events({
'input #companyEmail': function(ev,err){
var emailAddress = ev.target.value;
console.log(this); // will be the value of companyEmail from the #each
}
});
На самом деле, форма содержит и другие входы, и я обрабатываю электронные письма вне рамки шаблона, возможно ли это в этом случае? –
начиная с моего пути с Meteor Я работаю только в шаблонах. маршрутизация и шаблоны имеют довольно короткую кривую обучения, и после ее освоения нет причин делать что-либо за пределами шаблона. это довольно сложно принять, но в некотором роде, не работая внутри шаблона, не хватает множества функций и мощности, которые могли бы заставить вас выбрать «Метеор» в первую очередь. но, конечно, у каждого свои предпочтения ... –