将模板实例数据作为关键字参数传递给嵌套模板
Passing template instance data as a keyword argument to a nested template
我有一个名为 skillbar
的模板,它有两个关键字参数,title
和 value
。
所以,例如,我可以输入:
{{>skillbar title="strength" value=51}}
渲染进度条已填满 51% 的标签 "strength" 的技能栏。
我有很多这样的技能栏我想创建,而不是做类似的事情:
{{>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>
改用此语法:
<template name="abilities">
{{#each abilities}}
{{> skillbar}}
{{/each}}
</template>
调用子模板时,如果您不传递任何参数,其当前数据上下文将设置为父模板,这恰好是 {{#each}}
循环中的当前迭代能力。
或者您可以使用以下语法:
<template name="abilities">
{{#each abilities}}
{{> skillbar title=title value=value}}
{{/each}}
</template>
但在这种特定情况下,它是多余的,但无论出于何种原因重命名参数都可能有用。
我有一个名为 skillbar
的模板,它有两个关键字参数,title
和 value
。
所以,例如,我可以输入:
{{>skillbar title="strength" value=51}}
渲染进度条已填满 51% 的标签 "strength" 的技能栏。
我有很多这样的技能栏我想创建,而不是做类似的事情:
{{>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>
改用此语法:
<template name="abilities">
{{#each abilities}}
{{> skillbar}}
{{/each}}
</template>
调用子模板时,如果您不传递任何参数,其当前数据上下文将设置为父模板,这恰好是 {{#each}}
循环中的当前迭代能力。
或者您可以使用以下语法:
<template name="abilities">
{{#each abilities}}
{{> skillbar title=title value=value}}
{{/each}}
</template>
但在这种特定情况下,它是多余的,但无论出于何种原因重命名参数都可能有用。