我正在尝试显示我在ember.js中创建的简单通用数据表视图。
我想将列传递给它:
App.MyDatatableView columnsBindings="['col1','col2']" }}
或:
App.MyDatatableView columnsBindings=['col1','col2'] }}
但是没有工作。在这两种情况下,我的columns属性都是'undefined'。
我的观点如下:
App.MyDatatableView = Ember.View.extend({
templateName : 'datatable',
attributeBindings: ['columns'],
columns : []
});
我的另一个选择是必须从视图继承,但如果你只能传递把手模板中的值,那就更好了。
感谢您的帮助, 杰森
答案 0 :(得分:3)
Handlebars不支持将数组传递给绑定。您需要传入包含这些列值的属性。例如,在你的控制器使用中,
App.MyController = Ember.Controller.extend({
columns: function() {
return ['col1', 'col2'];
}.property()
});
然后,您可以在模板中使用此columns
属性,例如
{{MyDatatableView columnsBindings=columns}}
Handlebars视图助手可以解析计算属性中的列字符串。对于复杂的解析,您也可以使用JSON.parse
,该示例只是在逗号上分割。
帮助者注册,
Ember.Handlebars.helper('MyDatatableView', App.MyDatatableView);
具有cols
计算属性的相应视图。
App.MyDatatableView = Ember.View.extend({
cols: function() {
return this.get('columns').split(',');
}.property('columns'),
didInsertElement: function() {
console.log('didInsertElement', this.get('cols'));
}
});
在模板中使用帮助器
{{MyDatatableView columns="col1,col2"}}