{hero}

延迟加载

自从:DataTables 2.1

在第二次绘制前延迟加载服务器端数据。

描述

在使用服务器端处理时,DataTables 的默认操作模式是简单地丢弃当前表格中存在的任何数据,并向服务器发出请求以获取要显示的第一页数据。这对一张空表来说很好,但如果您已经在纯 HTML 中显示了第一页数据,这是一种资源浪费。因此,此选项旨在允许您指示 DataTables 不进行该初始请求,而是使用页面上已经存在的数据(不应用排序等操作)。

deferLoading 用于指示需要延迟加载,但它还用于告诉 DataTables 完整表格中有多少条记录(允许正确显示信息元素和分页)。如果是为最初加载的表格应用了过滤,可以通过将参数作为数组提供来指示,其中第一个元素是过滤后可用的记录数,第二个元素是在没有应用过滤时记录数(允许正确显示表信息元素)。

请注意,此选项只有当启用 serverSide 时才有作用。在使用客户端处理时,它没有任何效果。

此外,有许多情况下,此选项不起作用。例如状态保存、预定义过滤、SearchPanes 和 SearchBuilder 等扩展,以及更多。除非用于填充表格初始 HTML 的逻辑与 DataTables 填充要显示的数据的方式(例如排序和搜索)完全匹配,否则它不起作用。不支持此类用例。如果您需要使用其中任何功能,请禁用此选项。

除非您确实需要此选项提供的行为并了解对您正在使用的其他模块的影响,强烈建议您不要使用它!

类型

整数

描述

当给出整数时,这将启用延迟加载,并指示 DataTables 完整数据集中有多少项。

数组

描述

作为一个数组,这也将启用延迟加载,其中第一个数据索引告诉 DataTables 在筛选后的结果集中有多少行,第二个数据索引告诉 DataTables 在没有应用筛选时完整数据集中有多少行。

默认

  • 值:null

示例

表格中有 57 条可用记录,未应用筛选

new DataTable('#myTable', {
	ajax: '/api/data',
	deferLoading: 57,
	serverSide: true
});

筛选后 57 条记录,未筛选时 100 条记录(应用了初始筛选器)

new DataTable('#myTable', {
	ajax: '/api/data',
	deferLoading: [57, 100],
	search: {
		search: 'search string'
	},
	serverSide: true
});

相关

以下选项直接相关,在您的应用程序开发中可能也有用。