模板实例化中的模板助手

时间:2015-07-31 14:37:42

标签: html meteor meteor-helper

是否可以在模板实例化中调用模板助手?

对于我的项目,我为所有自定义样式的输入元素创建了模板,使它们可以重复使用。例如,复选框看起来像:

<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不喜欢我试图在实例化中使用帮助器。所以我的问题是: 有没有办法在模板实例化中调用模板助手?

1 个答案:

答案 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