1

別のモデルと hasMany 関係を持つモデル プロパティからテーブルを作成しています。ユーザーが列ヘッダーをクリックすると、基になるモデルでその列がマップされているものに基づいて基になるモードデータが並べ替えられるように、並べ替え機能を実装したかったのですが、うまくいきませんでした。私が試したことのjsfiddleをjaveします:http://jsfiddle.net/CMe28/4/

次のようなコントローラーで定義されたプロパティがあります。

analyticsRunParameters: (function() {
    var sortColumn = this.get('sortColumn');
    return Ember.ArrayProxy.createWithMixins(Ember.SortableMixin, {
        sortProperties: [sortColumn],
        //sortAscending: true,
        content: this.get('content.analyticsRunParameters')
    });
}).property('content.analyticsRunParameters')

これは最初の読み込みには機能しますが、後でデータを並べ替える列を更新する方法についてはわかりません。そこにある解決策はarraycontrollerで機能するようですが、私のメインコントローラーはObjectControllerです。そのような場合にソートを実装するために何ができるかアドバイスしてください。

ありがとう、ディー

4

2 に答える 2

2

これを行う最も簡単な方法は、 を使用してArrayControllerを制御してからanalyticsRunParameters、組み込みの を使用することsortPropertiesです。テンプレートで使用することによりrender、テンプレートだけでなく、必要に応じてコントローラーとビューを使用できるようになります。

したがって、アプリケーション テンプレート内をループする代わりに、次のanalyticsRunParametersようにすることができます。

{{render "analyticsRunParameters"}}

そして、analyticsRunParametersテンプレートにはテーブルとループが含まれています。

次に、コントローラーがあります。

App.AnalyticsRunParametersController = Ember.ArrayController.extend({
    sortProperties : 'category',
    setSort : function(sort){
      this.set('sortProperties',sort);
    }
});

ここにあなたのフィドルの修正があります:http://jsfiddle.net/k3p8s/

setupControllerのコレクションを設定するためにルートでフックが使用されていることに注意してくださいAnalyticsRunParametersController

:にも注意してApplicationControllerくださいneeds : ["analyticsRunParameters"]

于 2013-09-14T05:07:18.463 に答える
1

あなたがArrayProxyで持っているものは私にとってはうまくいきます.問題は、プロパティにsortColumnを観察するように指示していないことです. コードを次のように変更すると

analyticsRunParameters: (function() {
    var sortColumn = this.get('sortColumn');
    return Ember.ArrayProxy.createWithMixins(Ember.SortableMixin, {
        sortProperties: [sortColumn],
        //sortAscending: true,
        content: this.get('content.analyticsRunParameters')
    });
}).property('content.analyticsRunParameters', 'sortColumn')

その後、sortColumn を更新して (this.set('sortColumn')入力にバインドするか、値をバインドすることによって)、物事を解決できるようにする必要があります。

于 2014-06-20T21:00:07.547 に答える