【问题标题】:Utilizing jquery.tablesorter with a jquery.tmpl generated table将 jquery.tablesorter 与 jquery.tmpl 生成的表一起使用
【发布时间】:2011-08-01 17:00:38
【问题描述】:
我有一个从 KnockoutJS observableArray viewModel 使用 jquery.tmpl 动态生成的表。在初始绑定之后,我还将 tablesorter 应用于 table id 以进行排序。
正如我“预期”的那样,每当一个项目被移除(或添加到)viewModel 时,表格就会更新,但在更新之后,tablesorter 将不起作用,除非我再次调用 $("#id").tablesorter();。
这里有使用 jQuery.tablesorter 和 KnockoutJS 的最佳实践吗?有没有更好的插件可以在这里使用?显然我正在做的工作,但我想知道我是否遗漏了一些更有效的简单方法。
【问题讨论】:
标签:
jquery
tablesorter
knockout.js
【解决方案1】:
您可以调用 $("#id").trigger("update"),而不是每次调用 $("#id").tablesorter() >.
这似乎是让 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">