1

我正在尝试显示我在 ember.js 中创建的简单通用数据表视图。

我想像这样将列传递给它:

App.MyDatatableView columnsBindings="['col1','col2']" }}

或者 :

App.MyDatatableView columnsBindings=['col1','col2'] }}

但两者都不起作用。在这两种情况下,我的列属性都是“未定义”。

我的观点是这样的:

App.MyDatatableView = Ember.View.extend({
    templateName : 'datatable',
    attributeBindings: ['columns'],
    columns : []
});

我的另一个选择是必须从视图继承,但如果你可以只传递把手模板中的值会更好。

感谢您的帮助,杰森

4

1 回答 1

3

Handlebars 不支持将数组传入绑定。您需要传入一个包含这些列值的属性。例如在您的控制器使用中,

App.MyController = Ember.Controller.extend({
  columns: function() {
    return ['col1', 'col2'];
  }.property()
});

然后,您可以columns在模板中使用此属性,例如,

{{MyDatatableView columnsBindings=columns}}

编辑:车把助手。

车把视图助手可以解析出计算属性中的列字符串。对于复杂的解析,您也可以使用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"}}
于 2013-07-27T14:33:34.280 回答