【问题标题】:Sorting a paginated table built with KnockoutJS by column按列对使用 KnockoutJS 构建的分页表进行排序
【发布时间】:2013-05-26 11:13:34
【问题描述】:
我正在尝试通过单击列标题来了解如何对表格进行排序。我尝试在我的 ViewModel 中创建一个方法,该方法将按名称排序以开始,但没有成功。
我尝试了以下方法,但它似乎并没有真正做任何事情:
list.sort(function(left, right) { return left.name== right.name? 0 : (left.name< right.name? -1 : 1) })
这是我当前的代码:
http://jsfiddle.net/TsgyJ/
例如,我想单击“名称”标题并使其按升序排序,然后再次单击并使其按降序排序。
【问题讨论】:
标签:
c#
asp.net-mvc-4
twitter-bootstrap
mvvm
knockout.js
【解决方案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);
};