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

时间:2011-04-08 17:37:38

标签: jquery tablesorter knockout.js

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

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

这里有将jQuery.tablesorter与KnockoutJS一起使用的最佳做法吗?这里有更好的插件吗?显然我正在做的工作,但我想知道我是否遗漏了一些更有效的简单。

1 个答案:

答案 0 :(得分:5)

每次调用 $(“#id”)。tablesorter(),而不是每次调用 $(“#id”)。触发器(“更新”)

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

如果你想让它变得更有趣,你可以为你的表创建一个自定义绑定,只要你的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");
    }
}

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

<table id="mytable" data-bind="triggerUpdate: items">