0

サーバーからのデータで生成されたテーブルがあります。テーブルの各列の上部には、その列の値に基づいてテーブル全体を高いものから低いもの、または低いものから高いものへと並べ替えるためのボタンがあります。アルファベット順に並べ替えられる名前列もあります。

現在、私はこれらすべてをハンドルバーに接続しています。ボタンをクリックすると、テーブルデータの配列がソートされ、テンプレートが再補間されてページに挿入されます。

これを ember.js の使用に移行しようとしています。私の最初の問題は、テーブルデータ配列が単純な配列ではなくなったことです。これは、あらゆる種類の get メソッドと set メソッド、およびその他のものを内部に持つ ember オブジェクトです。私が持っているような関数を使用してこれをソートするにはどうすればよいですか:

function sortAtoZ(arr, one, two) {
    arr.sort(function(a, b) {return a[one].localeCompare(b[two])});
}
4

1 に答える 1

1

基本的な並べ替えのサポートは、 Sortable Mixinを介して ember 配列コントローラーに組み込まれています。デフォルトでは、Ember.compare を使用した 1 つ以上のプロパティによる並べ替えをサポートしていますが、次のようなカスタム sortFunction を使用できます。

App.TableController = Ember.ArrayController.extend({
  sortProperties: ['trackNumber'],
  sortAscending: true,
  sortFunction: function(a,b) {
    // your custom sort logic here
    // return 0 if the two parameters are equal, return a negative value if the first parameter is smaller than the second or return a positive value otherwise
  }
});

また、テーブルを使ってより高度なことをしたい場合は、ember-tableを見てください。

于 2013-08-14T15:35:35.257 に答える