J’ai une table sur laquelle j’ai besoin d’appliquer le sorting. J’utilise knockout et jquery.tablesorter.js. J’ai essayé la reliure personnalisée aussi mais ne m’aide pas. Sans KO, mon code fonctionne bien. Ci-dessous est ma table.
Type Title
Voici un exemple: http://jsfiddle.net/jearles/RGsEH/
REMARQUE: Les dépendances de fichiers JS et CSS sont imscopes sous Ressources gérées.
HTML
Type Title
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());
La solution ci-dessus de @john Earles fonctionne sur des tables de données prédéfinies, mais lorsque nous ajoutons des données dynamics à des tables, elles se cassent un peu.
veuillez vérifier ceci: 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());
nous avons trouvé un moyen de créer un sorting presque générique, merci de suivre ce lien