按列

2013-05-30 46 views
0

對使用​​KnockoutJS構建的分頁表進行排序我想弄清楚如何通過單擊列標題對錶進行排序。我試着在我的ViewModel中創建一個方法,它將按名稱排序以開始,但沒有成功。按列

我嘗試以下,但它沒;噸似乎真正做任何事情:

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

這裏是我當前的代碼:

http://jsfiddle.net/TsgyJ/

例如,我想點擊在「名稱」標題上並按升序排序,然後再次單擊並按降序排序。

回答

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); 
}; 
+0

哇感謝托馬斯,即做到了。 – PercivalMcGullicuddy