是否可以在模板实例化中调用模板助手?
对于我的项目,我为所有自定义样式的输入元素创建了模板,使它们可以重复使用。例如,复选框看起来像:
<template name="myCheckbox">
<input type="checkbox" id="{{id}}" class="myCheckbox ..." />
</template>
要使用它,我只需要:
{{> myCheckbox id="allowEdit"}}
这使我可以轻松控制整个项目中输入的外观,因为我只需更改模板即可更新所有复选框。这工作正常,但现在我需要一个模板帮助器来添加&#34;已检查&#34;属性为基于数据库的复选框。 E.g。
Template.myTemplate.helpers({
checkAllowEdit: function() {
return (this.allowEdit) ? "checked" : "";
}
});
{{> myCheckbox id="allowEdit" {{checkAllowEdit}} }}
这不起作用。 Meteor不喜欢我试图在实例化中使用帮助器。所以我的问题是: 有没有办法在模板实例化中调用模板助手?
答案 0 :(得分:1)
要检查帮助程序中的复选框,可以使用this Blaze feature:让帮助程序返回一个布尔值,然后将其分配给子模板的复选框checked
属性。
Template.myTemplate.helpers({
checkAllowEdit: function() {
return Boolean(this.allowEdit); // Boolean cast may be unnecessary
}
});
<template name="myTemplate">
{{!-- things... --}}
{{> myCheckbox id="allowEdit" checked=checkAllowEdit }}
</template
<template name="myCheckbox">
<input type="checkbox" id="{{id}}" class="myCheckbox ..." checked={{checked}} />
</template>
更自然的方法是在myCheckbox
模板中使用帮助程序而不是myTemplate
模板:
<template name="myTemplate">
{{!-- things... --}}
{{> myCheckbox id="allowEdit" }}
</template>
Template.myCheckbox.helpers({
checkAllowEdit: function() {
return Boolean(this.allowEdit); // Boolean cast may be unnecessary
}
});
<template name="myCheckbox">
<input type="checkbox" id="{{id}}" class="myCheckbox ..." checked={{checkAllowEdit}} />
</template>
但我有一种感觉,你有意在myTemplate
。