javascript - 即使在再次销毁和初始化数据表之后,数据表也不会在更新列表时更新数据(敲除绑定)。
问题描述
我有一个 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() }));
}
}
}
即使在销毁数据表之后,它也不会更新数据。有什么解决办法吗?
解决方案
带有淘汰赛的数据表将无法从盒子中使用。您可以查看下一个参考:https : //datatables.net/forums/discussion/31797/knockout-js-3-4-custom-binding-for-jquery-datatables-net,使用 knockoutjs 进行数据表数据绑定
在一般情况下,您需要订阅数组的更改,然后从网格中添加(或删除)项目,如下所示:
this.addItem = function (newItem) {
if (dataTable && dataTable.row && newItem) {
dataTable.row.add(newItem).draw(false);
}
};
数据表在哪里:let dataTable = $('#yourTable').DataTable();
推荐阅读
- python - 如何在 Python 的 Gekko 优化器中使用数组
- php - 对话流中的动态丰富响应
- php - 如何将id更改为表中的相关内容(id、主题)--Codeigniter
- python - 我在 python 中没有成功从 XML 文件中打印电影标题
- laravel - 我可以在已经使用 Gulp 的项目上使用 Laravel Mix 吗?
- python - 如何将插入符号移动到pycharm中的控制台?
- python - 如何为 numpy 元素添加维度?
- kubernetes - Kubernetes 根据 url 中的参数路由到特定 pod
- c++ - 返回语句后的代码没有警告
- api - GitLab api:我如何使用 gitlab api 获取项目列表?