Handlebars - 将变量传递给点符号

Handlebars - Pass variable into a dot notation

我正在尝试重用一个名为 rater-table.hbs 的部分,它看起来像这样

 <div class="comparison-rater-container">
  {{> rater-table header="Key Stakeholder" valueType=KeyStakeholder}}
  {{> rater-table header="Group 1" valueType=Group1}}
  {{> rater-table header="Group 2" valueType=Group2}}
  {{> rater-table header="Other Stakeholders" valueType=OtherStakeholders}}
</div>

在我的其他文件中,我可以很好地调用 header 变量,但我无法让 valueType 适合括号表示法。我正在尝试像这样使用它

{{ ../pole.summary.benefits.[(valueType)] }}

如果我对 Group1 一词进行硬编码,它可以正常工作,否则它会给我一个空值。有什么方法可以让它在车把上工作吗?

在 Handlebars 中的对象上查找动态 属性 的方法是使用 lookup helper。这看起来像:

{{lookup ../pole.summary.benefits valueType }}

但是,查找需要一个字符串值,该字符串值将是 属性 以查找作为第一个参数的对象。出于这个原因,您需要确保将您分配给 valueType 的每个值都用引号引起来。如果没有引号,Handlebars 将尝试将这些中的每一个评估为当前上下文对象的属性,并且它们最终都会将 valueType=undefined 传递给部分。

模板必须变成:

<div class="comparison-rater-container">
    {{> rater-table header="Key Stakeholder" valueType="KeyStakeholder"}}
    {{> rater-table header="Group 1" valueType="Group1"}}
    {{> rater-table header="Group 2" valueType="Group2"}}
    {{> rater-table header="Other Stakeholders" valueType="OtherStakeholders"}}
</div>

或者,您可以放弃查找,直接将每个值传递给部分值:

{{> rater-table header="Key Stakeholder" value=../pole.summary.benefits.KeyStakeholder }}

我创建了一个fiddle供参考。