Data binding 将硬编码参数传递给ember.js中的视图

Data binding 将硬编码参数传递给ember.js中的视图,data-binding,ember.js,Data Binding,Ember.js,我试图显示一个在ember.js中创建的简单通用datatable视图 我想像这样将这些列传递给它: App.MyDatatableView columnsBindings="['col1','col2']" }} App.MyDatatableView = Ember.View.extend({ templateName : 'datatable', attributeBindings: ['columns'], columns : [] }); 或: 但两者都不起

我试图显示一个在ember.js中创建的简单通用datatable视图

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

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

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

我的观点是这样的:

App.MyDatatableView columnsBindings="['col1','col2']" }}
App.MyDatatableView = Ember.View.extend({
    templateName : 'datatable',
    attributeBindings: ['columns'],
    columns : []
});
我的另一个选择是必须从视图继承,但是如果您可以只在Handlebar模板中传递值,那就更好了

谢谢你的帮助,
Jason

Handlebar不支持将数组传递到绑定。您需要传入保存这些列值的属性。例如,在控制器使用中

App.MyController = Ember.Controller.extend({
  columns: function() {
    return ['col1', 'col2'];
  }.property()
});
然后可以在模板中使用此
属性,如

{{MyDatatableView columnsBindings=columns}}
编辑:车把辅助对象。 handlebars视图帮助器可以解析计算属性中的列字符串。对于复杂的解析,您也可以使用
JSON.parse
,该示例只是在逗号上拆分

佣工注册

Ember.Handlebars.helper('MyDatatableView', App.MyDatatableView);
具有
cols
computed属性的相应视图

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"}}

我明白了,谢谢。传递字符串并使用JSON.parse()怎么样?我不喜欢仅仅为了传递一些信息而创建一个对象。我想,您可以在定制的Handlebar助手中使用
JSON.parse
。嗯,您知道如何轻松地扩展视图助手吗?因为我只需要添加这个功能