Где я должен разместить функции, которые являются общими для определенного шаблона?
Например, функция, которая вызывается из разных событий внутри шаблона.
Это по-прежнему считается помощником, хотя я не хочу вызывать функцию в своем шаблоне, например {{foo}}?
Ответ 1 · рейтинг 2 · saimeunt
Если эти функции используют базовые свойства и методы экземпляра шаблона, вы можете прикрепить их к экземпляру, вот простой пример формы подписки на информационный бюллетень:
HTML
<template name="newsletterForm">
<form>
<div class="alert {{alertClass}}">{{alertText}}</div>
<div class="form-group">
<label for="address">Email</label>
<input id="address" type="email" class="form-control" name="address">
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
</template>
JS
Template.newsletterForm.created=function(){
this.alertClass=new ReactiveVar("alert-primary");
this.alertText=new ReactiveVar("Subscribe to our newsletter, we'll send you the best links each week !");
//
this.subscribeSuccess=function(){
this.alertClass.set("alert-success");
this.alertText.set("Thanks for subscribing !");
};
this.subscribeFailure=function(){
this.alertClass.set("alert-warning");
this.alertText.set("Could't subscribe you to the newsletter, please double-check your email address !");
};
};
Template.newsletterForm.helpers({
alertClass:function(){
return Template.instance().alertClass.get();
},
alertText:function(){
return Template.instance().alertText.get();
}
});
Template.newsletterForm.events({
"submit":function(event,template){
event.preventDefault();
//
var address=template.$("[type='email']").val();
Meteor.call("newsletterSubscribe",address,function(error,result){
if(error){
template.subscribeFailure();
return;
}
template.subscribeSuccess();
template.find("form").reset();
});
}
});
Если они не используют какие-либо свойства, специфичные для экземпляра шаблона, вы можете просто объявить их как функции с файловой областью:
function commonFunc(){
}
Если эти функции не предназначены для использования в качестве помощников, я думаю, что нет необходимости объявлять их как таковые.