DataTables .draw() 未正确触发

DataTables .draw() not firing properly

好的,所以我有一个 DataTable,当单击清除按钮时,我试图重新呈现它。

当我通过我的自定义过滤器过滤 table 时,它按预期工作。但是,当我单击 'Clear' 时,所有输入都会按预期清除,但 table 不会重绘。相反,table 仍然显示 'No Matching Records Found'。控制台中没有抛出任何错误,相同的代码在另一个模板中也能正常工作。

有什么想法吗?

var table = $('#pages').DataTable({
  'ordering': true,
  "columnDefs": [
    { "name": "title", "targets" : 0},
    { "name": "path", "targets" : 1 },
    { "name": "created", "targets" : 2 },
    { "name": "updated", "targets" : 3 },
    { "name": "creator", "targets" : 4 },
    { "name": "templateName", "targets" : 5 },
    { "name": "status", "targets" : 6 },
    { "name": "includeOnMenu", "targets" : 7 },
  ],
    "dom": 'tip'  
});
$('.clear-filter').click(function() {
  $("#filter :input").each(function() {
    this.value = "";
  });
  table.draw();
});

您应该可以在 table.draw(); 之前使用 table.destroy();。在进行 table 抽签之前,您很可能已经 "filtering" 了,这就是导致此问题的原因。 table.destroy(); 将去掉任何过滤,然后您可以从头开始绘制。

https://datatables.net/reference/api/destroy()

我遇到了一个非常相似的问题。这对我有用:

table.rows().invalidate().draw()