2013-02-27 32 views
0

我有多个表,我正在填充Knockout。目前我正在使用淘汰赛排序方法Knockout Table Sorting,每个列的单个函数?

{ return a.total_sales() > b.total_sales() ? -1 : 1; } 
    else { return a.total_sales() < b.total_sales() ? -1 : 1; }; 

但是,我需要对每个表中的每列进行排序。有没有写过所有这些陈述?我看着jquery tablesorter,但它似乎不适用于我的表格。许多列是按钮或其他对象,而不仅仅是文本。如果我坚持使用淘汰赛的方法,我将拥有超过100个这些。建议?

如果需要的话,我可以补充一点,失败的tablesorter表格例

+0

如果你使用tablesorter插件,你需要编写一个解析器来获取按钮和其他对象的文本,属性,值或其他([ref](http://tablesorter.com/docs/example-parsers.html ))。如果你分享一些示例HTML,我可能会帮助更多。 – Mottie 2013-02-27 17:29:15

回答

0

您可以添加绑定处理程序使用jQuery插件:

ko.bindingHandlers.tablesorter = { 
    init: function(element, valueAccessor, allBindingsAccessor, viewModel) { 
    }, 
    update: function(element, valueAccessor, allBindingsAccessor, viewModel) { 
    var options = ko.utils.unwrapObservable(valueAccessor()); 
     $(element).tablesorter(options) 
    } 
} 
在HTML

然后:

<table data-bind="tablesorter: {sortList: [[0,0], [1,0]]}"></table> 
+0

我已经看过那个。但是,它只对一个方向排序,并在点击排序时添加一行。我也试过只是将tablesorter添加到一个空表中,然后调用.trigger(“update”),但是当我尝试对列进行排序时[0] undefinted或[1]等... – user1813251 2013-02-27 19:37:30

+0

Uncaught TypeError:Can not使用$(“#r1table”)时,读取属性'1'未定义的 是错误。tablesorter(); init和$(“r1table”)。trigger(“update”);更新 – user1813251 2013-02-27 19:44:03