将模板实例数据作为关键字参数传递给嵌套模板

Passing template instance data as a keyword argument to a nested template

我有一个名为 skillbar 的模板,它有两个关键字参数,titlevalue

所以,例如,我可以输入:

  {{>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>

但在这种特定情况下,它是多余的,但无论出于何种原因重命名参数都可能有用。