【问题标题】:Show loading gif when DataTable has been cleared清除数据表时显示加载 gif
【发布时间】:2016-09-19 19:39:57
【问题描述】:

我的 JQuery 数据表有几个选项,它们将清除数据表并通过 WebSockets 加载新数据。因此,我使用fnClearTable() 清除表格内容,片刻之后,我通过我的 WebSocket 获取新数据。

这可能会持续几秒钟,同时我想在我的 DataTable 中显示加载图像。我怎样才能做到这一点?

我的清除数据表的事件处理程序

/* On Daterange change (e.g. Last 3 Days instead of Last 24h) */

    $('#profitList_dateRange').change(function() {
        var dateRangeHours = $("#profitList_dateRange").val();
        var jsonParamObject = JSON.parse(dateRangeHours);

        // Clear table
        var profitList = $('#profitList').dataTable();
        profitList.fnClearTable(); // Now I want to show the loading image!
        socket.emit('load-statistics', (jsonParamObject));
    });

【问题讨论】:

  • 如果页面上的 gif 被隐藏了怎么办。然后一旦更改函数被触发,显示它,一旦清除函数完成,再次通过回调隐藏 gif。

标签: javascript jquery node.js datatable


【解决方案1】:

实现它的一种方法是,如果您有 2 个 div(我假设您的 div 的样式与其中的内容相匹配):

<div id="profitList"> your table content </div>
<div id="profitListLoading"> show loading here </div>

然后在你的处理程序中:

$('#profitList_dateRange').change(function() {
        var dateRangeHours = $("#profitList_dateRange").val();
        var jsonParamObject = JSON.parse(dateRangeHours);

        // Clear table
        var profitList = $('#profitList').dataTable();
        profitList.fnClearTable(); // Now I want to show the loading image!
        $('#profitList').hide();
        $('#profitListLoading').show();
        socket.emit('load-statistics', (jsonParamObject));
    });

在处理加载的数据时,您应该ofc。还原更改

        $('#profitList').show();
        $('#profitListLoading').hide();

【讨论】:

  • 我认为这不是一个好方法,因为这没有利用“处理” div 的 DT 功能,这意味着您必须担心 div 的样式、定位在正确的位置并确保它是响应式的(如果你关心的话)使用processing 选项会更好 IMO
  • 我同意。我不知道这个功能,并提供了一个通用的解决方案。
【解决方案2】:

确保你有processing: true

$('#example').dataTable({
    processing: true
});

然后添加:

$('.dataTables_processing', $('#example').closest('.dataTables_wrapper')).show(); 

如果要添加 GIF 图片,可以按如下方式更改标记:

$('#example').dataTable({
  oLanguage: {
    sProcessing: "<img src='https://d13yacurqjgara.cloudfront.net/users/12755/screenshots/1037374/hex-loader2.gif'>"
  },
  processing: true
});

演示http://jsfiddle.net/0m6uo54t/2

处理:

启用或禁用“处理”指示器的显示,当 正在处理表(例如排序)。这个特别有用 对于具有大量数据的表,它可能需要一个明显的 对条目进行排序的时间。

https://datatables.net/reference/option/processing

[UPDATE] bProcessing 是旧选项,新的 DT 代码使用 processing

【讨论】:

  • bProcessing 标志是什么意思?
  • 查看我的更新,它基本上可以显示隐藏处理div
  • 我已经尝试过这种方法,方法是在 fnClearTable 之后将此行添加 $('.dataTables_processing', $('#profitList').closest('.dataTables_wrapper')).show(); 到我的更改事件处理程序中,但它似乎不起作用。创建数据表时,我已将处理设置为 true。清除表格而不是显示加载动画后,行为没有改变(它显示无可用数据)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-04
  • 2015-06-26
  • 2021-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多