{{#each modelItems as |item|}}
<tr>
<td>
{{ item.name }}
</td>
{{#each selectedColumns as |extraCol|}} // line 27
<td>
{{ extraCol }}
{{ item[concat '"' extraCols '"'] }} // what I tried
{{ item[(concat '"' extraCols '"')] }}
</td>
{{/each}}
</tr>
{{/each}}
在模板中,我有一个modelItems
列表。在表格中显示了某些列,但selectedColumns
列表中也可能包含可选列。
作为第27行,我循环遍历selectedColumns
以显示它们但没有运气。
Handlebars如何通过属性名称动态显示对象属性?
在JS中它就像
foreach (items in selectedColumns) {
console.log(item.name);
foreach (column in selectedColumns) {
console.log(item['"'+column+'"']);
}
}
答案 0 :(得分:2)
使用get帮助程序,您可以动态访问对象的属性。如果将其与subexpressions把手结合使用,您仍然可以使用concat助手。
您的代码看起来像:
{{#each modelItems as |item|}}
<tr>
<td>
{{ item.name }}
</td>
{{#each selectedColumns as |extraCol|}}
<td>
{{get item (concat '"' extraCol '"')}}
</td>
{{/each}}
</tr>
{{/each}}
答案 1 :(得分:1)
在把手{{
内部,您无法编写JS代码,因此您无法使用[]
访问集合中的项目。而是编写一个帮助程序,它返回所选的项目。
我写了一个例子here