我有一张表,我需要在其中应用排序。我正在使用knockout和jquery.tablesorter.js。我也试过自定义绑定,但没有帮助。没有淘汰我的代码工作正常。以下是我的表格。
<table class="tbl" id="dash" data-bind="sortTable: true">
<thead>
<tr class="tag close">
<th>Type</th>
<th>Title</th>
</tr>
</thead>
<tbody class="scrollContent" data-bind="foreach: Course">
<tr>
<td><i class="icon"></i></td>
<td><a href="#" id="qtipselector_01" data-bind="text: Title"></a></td>
<div id="TooltipContent_01" class="hidden">
<a> Test Tool Tip</a>
</div>
</div>
</tr>
</tbody>
</table>
答案 0 :(得分:12)
以下是一个示例:http://jsfiddle.net/jearles/RGsEH/
注意:JS和CSS文件依赖项是在Managed Resources下引入的。
<强> HTML 强>
<table data-bind="sortTable: true">
<thead>
<tr>
<th>Type</th>
<th>Title</th>
</tr>
</thead>
<tbody data-bind="foreach: course">
<tr>
<td data-bind="text: type"></td>
<td data-bind="text: title"></td>
</tr>
</tbody>
</table>
<强> JS 强>
function Course(type, title) {
this.type = type;
this.title = title;
}
var ViewModel = function() {
this.course = ko.observableArray([
new Course("type", "course1"),
new Course("another_type", "course2"),
new Course("second_type", "course5"),
new Course("third_type", "course4"),
new Course("fourth_type", "course3")
]);
}
ko.bindingHandlers.sortTable = {
init: function(element, valueAccessor) {
setTimeout( function() {
$(element).addClass('tablesorter');
$(element).tablesorter({widgets: ['zebra']});
}, 0);
}
};
ko.applyBindings(new ViewModel());
答案 1 :(得分:0)
@john Earles的上述解决方案适用于预先定义的数据表,但是当我们向表中添加动态数据时,它就会中断。
请检查:http://jsfiddle.net/vkctata/vdcox07c/1/
function Course(type, title) {
this.type = type;
this.title = title;
}
var ViewModel = function() {
this.addNewItem = function() {
this.course.push(new Course("nth_type", "course33"));
return false;
}
this.course = ko.observableArray([
new Course("type", "course1"),
new Course("another_type", "course2"),
new Course("second_type", "course5"),
new Course("third_type", "course4"),
new Course("fourth_type", "course3")
]);
}
ko.bindingHandlers.sortTable = {
init: function(element, valueAccessor) {
setTimeout(function() {
$(element).addClass('tablesorter');
$(element).tablesorter({
widgets: ['zebra']
});
}, 0);
}
};
ko.applyBindings(new ViewModel());
我们找到了一种创建近似通用排序的方法,请点击此链接knockout sort