为了详细说明标题,我想要实现的是以下内容。
我正在 Ember 中构建一个交互式表格组件。这是剥离的模板:
<table>
<thead>
<tr>
{{#each header in headers}}
<th>{{header}}</th>
{{/each}}
</tr>
</thead>
<tbody>
{{#each row in rows}}
<tr>
{{#each header in headers}}
<td>{{input value=row.[header]}}</td> <!-- can I bind to row.header here somehow? -->
{{/each}}
</tr>
{{/each}}
</tbody>
</table>
我希望特定行和特定列的每个输入字段都绑定到该行的row
对象,特别是绑定到以标题列命名方式命名的属性。
本质上,我想使用标头变量的值来绑定由该值调用的行对象中的属性(如果当前标头有值'title'
,那么我想绑定到row.title
)
这是我如何初始化这些对象的示例:
var headers = ['title','description'];
var rows = [],
row = {};
for(var i = 0; i < headers.length; i++) {
row[headers[i]] = ''; // this line does similar thing to what I am trying to achieve
}
rows.push(row);
/* This gives
rows = [
{
title: '',
description: ''
}
]
*/
经过研究,我在 Handlebars 文档中发现了这一点,上面说我可以访问如下属性:
{{#each articles.[10].[#comments]}}
...
{{/each}}
根据文档,这与以下内容几乎相同:
articles[10]['#comments']
但是,使用:
rows.[header]
对我不起作用,因为它试图从字面上访问对象的'header'
属性rows
(即rows.header
)而不是包含在标头变量中的值。