通过变量名获取属性

时间:2014-02-26 15:11:14

标签: ember.js handlebars.js

我想使用emberjs模板渲染表格。该表应该解析要动态呈现的列:

<table>
    {{#each item in this.items}}
        <tr>
            {{#each colName in this.columnNames}}
                <td>{{item.[colName]}}</td>
            {{/each}}
        </tr>
    {{/each}}
</table>

但是,我认为把手会尝试访问项目的属性colName。如何动态访问该属性?

2 个答案:

答案 0 :(得分:2)

更新:正如Visualize在评论中指出的那样,现在有一个native get helper。您应该优先考虑下面的实现(可能无法使用较新版本的Ember正确更新。)


我不确定Handlebars是否能够动态解析这样的变量(至少开箱即用)。我可能会写自己的帮手。

Ember.Handlebars.helper('getProperty', function(object, property, options) {
    return Ember.get(object, property);
});

然后在你的模板中:

{{#each item in items}}
    <tr>
    {{#each colName in columnNames}}
        <td>{{getProperty item colName}}</td>
    {{/each}}
    </tr>
{{/each}}

如果我对Ember绑定的理解是正确的,那么帮助器应该在itemcolName被更改的任何时候重新渲染。

答案 1 :(得分:0)

{{#each item in items}}
<tr>
{{#each colName in columnNames}}
    <td>{{get item colName}}</td>
{{/each}}
</tr>
{{/each}}

使用get助手。 谢谢。