我有一个从KnockoutJS observableArray viewModel动态生成jquery.tmpl的表。在初始绑定之后,我还将tablesorter应用于表id以进行排序。
正如我将“期望”每当项目被移除(或添加到)viewModel时,该表都会更新,但更新后的tablesorter不起作用,除非我再次调用$("#id").tablesorter();
。
这里有将jQuery.tablesorter与KnockoutJS一起使用的最佳做法吗?这里有更好的插件吗?显然我正在做的工作,但我想知道我是否遗漏了一些更有效的简单。
答案 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">