将jquery.tablesorter与jquery.tmpl生成的表一起使用

Tod*_*odK 3 jquery tablesorter knockout.js

我有一个从KnockoutJS observableArray viewModel动态生成jquery.tmpl的表.在初始绑定之后,我还将tablesorter应用于表id以进行排序.

正如我将"期望"每当项目被移除(或添加到)viewModel时,该表都会更新,但是在更新tablesorter不起作用之后,除非我再次调用$("#id").tablesorter();.

这里有使用jQuery.tablesorter和KnockoutJS的最佳实践吗?这里有更好的插件吗?显然我正在做的工作,但我想知道我是否缺少一些更有效的简单方法.

RP *_*yer 5

而不是每次调用$("#id").tablesorter(),你可以调用$("#id").trigger("update").

这似乎是让tablesorter知道基于文档需要考虑新数据的首选方法.

如果你想让它变得更有趣,你可以为你的表创建一个自定义绑定,只要你的observableArray发生变化就会被调用.

看起来像这样:

ko.bindingHandlers.triggerUpdate = {
    update: function (element, valueAccessor) {
        ko.utils.unwrapObservable(valueAccessor()); //need to just access the observable to create the subscription
        $(element).trigger("update");
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,你会把它放在你的桌子上,如:

<table id="mytable" data-bind="triggerUpdate: items">
Run Code Online (Sandbox Code Playgroud)