0

列ヘッダーをクリックしてテーブルを並べ替える方法を見つけようとしています。開始するために名前で並べ替えるだけのメソッドを ViewModel に作成しようとしましたが、成功しませんでした。

次のことを試しましたが、実際には何もしていないようです。

list.sort(function(left, right) { return left.name== right.name? 0 : (left.name< right.name? -1 : 1) })

これが私の現在のコードです:

http://jsfiddle.net/TsgyJ/

たとえば、「名前」ヘッダーをクリックして昇順で並べ替え、もう一度クリックして降順で並べ替えたいとします。

4

1 に答える 1

1

これがあなたの作業サンプルです:http://jsfiddle.net/tkirda/TsgyJ/1/

HTML:

  <thead>
    <th data-bind="click: sort.bind($data, 'id') ">ID</th>
    <th data-bind="click: sort.bind($data, 'name') ">Name</th>
    <th data-bind="click: sort.bind($data, 'email') ">Email</th>
    <th data-bind="click: sort.bind($data, 'city') ">City</th>
    <th data-bind="click: sort.bind($data, 'created') ">Created</th>
  </thead>

JavaScript:

self.sort = function (key) {
    sortDir = sortDir * -1;
    self.list.sort(function (a, b) {
        return sortDir * (a[key] == b[key] ? 0 : (a[key] < b[key] ? -1 : 1));
    });
    self.moveToPage(1);
};
于 2013-05-30T19:36:58.897 に答える