1

ember.js で作成している単純な汎用データ テーブル ビューを表示しようとしています。

次のように列を渡したいと思います。

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

また :

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

しかし、どちらも機能しません。どちらの場合も、列のプロパティは「未定義」です。

私の見解は次のようになります。

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

もう 1 つのオプションは、ビューから継承する必要があることですが、ハンドルバー テンプレートで値を渡すことができれば、はるかに優れています。

助けてくれてありがとう、ジェイソン

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 に答える