我有一个看起来像这样的把手模板:
<tr>
{{#each columns}}
<th>
{{name}}
</th>
{{/each}}
</tr>
{{#each items}}
<tr>
{{each columns}}
<td>
{{! I want the items statusString field here for example }}
{{../dataField}}
</td>
{{/each}}
</tr>
{{/each}}
并且此模板的输入看起来有点像这样:
columns = [
{name: 'status', dataField: 'statusString'},
{name: 'name', dataField: 'name'}
]
items = [
{status: 1, statusString: 'Active', name: 'item 1'},
{status: 1, statusString: 'Active', name: 'item 2'},
{status: 0, statusString: 'Disabled', name: 'item 3'},
{status: 1, statusString: 'Active', name: 'item 4'}
]
在模板中我想迭代每一列,并为每个项显示与每列对应的数据。但是我如何在车把中做到这一点?我尝试过像{{../{{dataField}}
,{{{{dataField}}}}
这样的表达式,但我无法解决任何问题。
我在ember.js中使用了把手。
答案 0 :(得分:3)
只需使用帮助
即可完成Handlebars.registerHelper('helper', function(fieldname, item) {
return item[fieldname];
});
另一种方法是使用对象迭代器,它是recently added by handlebars。您可以迭代这样的对象
var data = {"a": {"test":"test", "test2":"test2"}};
带有模板
{{#each a}}
{{@key}} - {{this}},
{{/each}}
将打印出“test-test,test2-test2”。如果您编辑了数据,则可以使用此输出获得正确的输出。