代码之家  ›  专栏  ›  技术社区  ›  levi

把手按属性名称动态显示对象属性

  •  2
  • levi  · 技术社区  · 7 年前
    {{#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行,我正在循环 选定的列 显示它们,但没有运气。 手柄如何能够按属性名称动态显示对象属性?


    在JS中

    foreach (items in selectedColumns) {
        console.log(item.name);
        foreach (column in selectedColumns) {
            console.log(item['"'+column+'"']);
        }
    }
    
    2 回复  |  直到 7 年前
        1
  •  3
  •   Jacob van Lingen    7 年前

    使用 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}}
    
        2
  •  1
  •   Jacob van Lingen    7 年前

    把手内侧 {{ 您无法编写JS代码,因此无法使用 [] . 而是编写一个助手,返回所选项目。

    我写了一个例子 here