在我的控制器中,我有一个像这样的字符串列表:
columns : ['name', 'description']
我想基于此列表过滤模板中显示的内容:
{{#each m in controller.model}}
{{#each col in controller.columns}}
<td>{{m[col]}}</td>
{{/each}}
{{/each}}
当然{{m[col]}}
不是有效代码,但您明白了。我怎么能实现这个目标?
这段代码是通用的,所以我无法预先知道列数组包含的内容。
答案 0 :(得分:1)
您可以按如下方式创建绑定助手:
Ember.Handlebars.registerBoundHelper('dd', function(rowData, col) {
return rowData[col];
});
然后,您可以在模板中使用它,如下所示:
{{#each item in model}}
<tr>
{{#each col in columns}}
<td> {{ dd item col }} </td>
{{/each}}
</tr>
{{/each}}
jsbin上的工作示例here
答案 1 :(得分:0)
如果您希望数据绑定到模板以便在数据更改时更新,请使用以下小组件:
App.getPropertyComponent = Ember.Component.extend({
tagName: '',
value: function() {
var model = this.get('model');
var method = this.get('method');
return model[method];
}.property('model.{name,description}')
});
请注意,您必须手动指定要绑定的每个属性。
组件模板:
{{value}}
然后,您可以在模板中使用它,如下所示:
{{#each item in model}}
<tr>
{{#each col in columns}}
<td>{{get-property model=item method=col}}</td>
{{/each}}
</tr>
{{/each}}