问题是.tablesorter
插件不会在您的模型中对self.users
数组进行排序,它仅对实际的<tr>
元素进行排序。你列分拣机必须调用observableArray.sort
法明确定制的比较器作为参数:
self.sortCol = function(colName, event) {
// get sorting direction
var th = event.target;
th.sortDir = (th.sortDir == 'asc' ? 'desc' : 'asc');
// array item comparator
function comp(a, b){
// get values to compare
var av = a[colName](), bv = b[colName]();
// compare using current direction
if (th.sortDir == 'asc') {
return av == bv ? 0 : av > bv ? 1 : -1;
} else {
return av == bv ? 0 : av < bv ? 1 : -1;
}
}
// do sort
self.users.sort(comp);
}
工作小提琴:http://jsfiddle.net/a8jUj/31/
附:举个例子,我通过函数绑定了.sortCol()
以获得对事件对象的访问权限。您可以重写模型以在模型属性中存储当前的排序参数。
由于马丁内斯......这让我在正确的方向。 –