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

时间:2013-07-27 14:07:45

标签: data-binding ember.js

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

我想将列传递给它:

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

或:

App.MyDatatableView columnsBindings=['col1','col2'] }}
但是没有工作。在这两种情况下,我的columns属性都是'undefined'。

我的观点如下:

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

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

感谢您的帮助, 杰森

1 个答案:

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