我有一个html文件,其中包含一个带有可绑定数组的数据表。单击按钮时,列表中的数据会更新,但数据表不会反映新数据。即使在删除正文并销毁表后,它也不会刷新表。
<table id="SVRnew" class="display">
<thead>
<tr>
<th>Domain</th>
<th>Sub Domain</th>
<th>Event Type</th>
<th>Event Sub type</th>
<th>Event Name</th>
<th>SVR</th>
<th>Deloitte Capability</th>
</tr>
</thead>
<tbody data-bind="foreach : $root.LISTSVREASnew">
<tr>
<td class="table-column-ellipses" data-bind="text:DOMAIN"></td>
<td class="table-column-ellipses" data-bind="text:SUB_DOMAIN"></td>
<td class="table-column-ellipses" data-bind="text:EVENT_TYPE"></td>
<td class="table-column-ellipses" data-bind="text:EVENT_SUBTYPE"></td> <td class="table-column-ellipses" data-bind="text:EVENT_NAME"></td>
<td class="table-column-ellipses" data-bind="text:SVR"></td>
<td class="table-column-ellipses" data-bind="text:Deloitte_Capability"></td>
</tr>
</tbody>
</table>
Javascript功能: -
function ClickAddMapping()
{
$('#SVRnew').DataTable().destroy();
$('#SVRnew tbody tr').remove();
_dtsvrnew = $('#SVRnew').DataTable({
scrollY: '30vh',
scrollCollapse: true,
paging: false,
"scrollX": true
});
VMHome.LISTSVREASnew([]);
var selectedevents = ko.computed(function () {
return VMHome.EventMappingforsvr().filter(function (i) {
return i.ISSELECTED() === true;
});
});
var selectedsvr = ko.computed(function () {
return VMHome.SVRList().filter(function (i) {
return i.ISSELECTED() === true;
});
});
for (var j = 0; j < selectedevents().length; j++)
{
for (var k = 0; k < selectedsvr().length; k++)
{
VMHome.LISTSVREASnew().push(new EASSVRModel({ 'SVR': selectedsvr()[k].SVR(), 'DSVRID': selectedsvr()[k].DSVRID(), 'Deloitte_Capability': selectedsvr()[k].Deloitte_Capability(), 'EAS_UID': selectedevents()[j].EAS_UID(), 'DOMAIN': selectedevents()[j].DOMAIN(), 'SUB_DOMAIN': selectedevents()[j].SUB_DOMAIN(), 'EVENT_TYPE': selectedevents()[j].EVENT_TYPE(), 'EVENT_SUBTYPE': selectedevents()[j].EVENT_SUBTYPE(), 'EVENT_NAME': selectedevents()[j].EVENT_NAME() }));
}
}
}
即使在销毁数据表后,它也不会更新数据。 任何解决方案?
答案 0 :(得分:0)
带有敲除的数据表将无法从框中工作。 您可以查看下一个参考文献:https://datatables.net/forums/discussion/31797/knockout-js-3-4-custom-binding-for-jquery-datatables-net,Datatable data binding using knockoutjs
一般情况下,您需要订阅数组的更改,然后在网格中添加(或删除)项目,如下所示:
this.addItem = function (newItem) {
if (dataTable && dataTable.row && newItem) {
dataTable.row.add(newItem).draw(false);
}
};
where datatable:let dataTable = $('#yourTable').DataTable();