按列

2013-05-30 12 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