Knockout Viewmodel绑定和数据表排序

时间:2014-07-14 15:29:32

标签: sorting knockout.js datatable

我正在使用Knockout进行数据绑定,并使用dataTable + YADCF进行排序和过滤。每次需要进行AJAX调用并通过Knockout刷新表数据(右侧)时,单击“类别”节点(左侧)时,我的方案并不复杂。这个Knockout绑定功能可以正常工作。

HTML代码

<table class="pdm-data-table pdmList" id="ListCatAttrVal" data-link="row">
<thead>
  <tr>
    <th>Display Name</th>
    <th>Display Source</th>
  </tr>
</thead>
<tbody id="listAttribute" data-bind="foreach: attributevalue">
  <tr>
    <td data-bind="text: dispName"></td>
    <td data-bind="text: dispSrc"></td>
  </tr>
</table>

淘汰赛型号代码

if (!ko.dataFor(document.getElementById("listAttribute"))) {
  var attributeModel = function () {
    this.attributevalue = ko.observableArray();
  };
  attributeBinding = new attributeModel();
  ko.applyBindings(attributeBinding, document.getElementById("listAttribute"));
}

问题是在为表格

应用DataTable之后
$("#ListCatAttrVal").dataTable().fnClearTable();
for (var x in response.attributes) {
  attributeBinding.attributevalue.push(response.attributes[x]);
}
$("#ListCatAttrVal").dataTable(); 

此后,数据表排序无法正常工作。 我正在尝试删除现有生成的dataTable,并在每次单击类别节点时重新启动它。但它没有按预期工作。

1 个答案:

答案 0 :(得分:0)

我在使用敲除和数据表时遇到了类似的问题 - 我在数据表中的绑定似乎最初没有用。作为一种解决方法,我最终以下列方式初始化数据表:

var table = $("#ListCatAttrVal").dataTable(); 
table.fnPageChange(0, true); 

在调用fnPageChange(或我认为的数据库库的任何其他函数)之后,绑定似乎正在起作用。