车把通过属性名称动态显示对象属性


{{#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循环以显示它们,但没有运气。如何通过属性名称动态显示对象属性?


在JS中,它会像

foreach (items in selectedColumns) {
    console.log(item.name);
    foreach (column in selectedColumns) {
        console.log(item['"'+column+'"']);
    }
}

使用Get Helper,您可以动态访问对象的属性。如果将其与车把的子表达结合在一起,则仍然可以使用Concat助手。

您的代码看起来像:

{{#each modelItems as |item|}}
<tr>
    <td>
        {{ item.name }}
    </td>
    {{#each selectedColumns as |extraCol|}}
        <td>
            {{get item (concat '"' extraCol  '"')}}
        </td>
    {{/each}}
</tr>
{{/each}}

在车把{{中您无法编写JS代码,因此您无法使用[]访问集合中的项目。而是写一个助手,该助手返回所选项目。

我在这里写了一个示例

最新更新