我有一个名为skillbar
的模板,它带有两个关键字参数,title
和value
。
因此,例如,我可以输入:
{{>skillbar title="strength" value=51}}
使用标签“strength”渲染技能栏,其进度条填满51%。
我想创建一些这些技能栏,而不是像以下那样:
{{>skillbar title="strength" value=51}}
{{>skillbar title="willpower" value=80}}
{{>skillbar title="imagination" value=30}}
我宁愿创建一个单独的模板,我可以在其上注册一个包含我可以用作参数的对象数组的帮助器。
Template.abilities.helpers({
abilities: [
{title: 'strength', value: 51},
{title: 'willpower', value: 80},
{title: 'imagination', value: 30}
]
});
据推测,我可以{{#each}}
覆盖标记中的abilities
数组,可以通过这种方式创建skillbar
模板实例。
这封装了我想要做的事情的本质,但它会引发语法错误:
<template name="abilities">
{{#each abilities}}
{{>skillbar title={{title}} value={{value}} }}
{{/each}}
</template>
答案 0 :(得分:1)
请改用此语法:
<template name="abilities">
{{#each abilities}}
{{> skillbar}}
{{/each}}
</template>
当调用子模板时,如果你没有传递任何参数,它的当前数据上下文将被设置为父模板,这恰好是来自{{#each}}
循环的当前迭代过的能力。
或者您可以使用以下语法:
<template name="abilities">
{{#each abilities}}
{{> skillbar title=title value=value}}
{{/each}}
</template>
但在这种特殊情况下,这将是多余的,但无论出于何种原因重命名参数都很有用。