将回调附加到数据表:正确的语法是什么?
2017-01-23
831
我正在定制一个第三方 Web 应用程序,该应用程序使用 Datatables 通过 AJAX 加载一些数据。我想将一个回调函数附加到该函数以检测何时完成加载。
现在,我已经阅读了有关
initComplete()
和
fnDrawCallback
的信息,但问题是:我看到的所有代码示例都是这种形式:
$('#tablename').dataTable( {
"initComplete": function() { }
但就我而言,数据表是由 Web 应用程序创建的,而不是由我创建的,我不想弄乱它的源代码(除此之外,因为数据表是在许多页面使用的函数中创建的,我只需要在其中一个页面中附加此回调)。我能做的是在创建表后获取对表的引用:
var tabla=$.('#tablename').DataTable();
然后... 什么?那么我该如何将回调附加到它?在这种情况下正确的语法是什么?
(如果这是一个愚蠢的问题,请原谅。我的工作中很少使用 Javascript,而且当我不得不接触它时,我的技能往往会生疏)。
2个回答
您可以监听
init
事件,该事件在 DataTables 完全初始化并加载数据时触发。
Ajax 来源的数据
如果您使用的是 Ajax 来源的数据,则可以在 DataTables 初始化 之前 或 之后 将处理程序附加到此事件。
var table = $('#example').DataTable({
ajax: 'https://api.myjson.com/bins/qgcu'
});
$('#example')
.on('init.dt', function () {
console.log( 'Table initialisation complete: '+new Date().getTime() );
});
有关代码和演示,请参阅 此示例 。
HTML 或 JavaScript 来源的数据
如果您使用的是 HTML 或 JavaScript 来源的数据,则需要在 DataTables 之前 将处理程序附加到此事件初始化。
$('#example')
.on('init.dt', function () {
console.log( 'Table initialisation complete: '+new Date().getTime() );
});
var table = $('#example').DataTable();
请参阅 此示例 以获取代码和演示。
Gyrocode.com
2017-01-24
您可以尝试保存旧设置,使用新的回调扩展设置对象,然后使用这些新设置重新初始化表:
var tabla = $('#table').dataTable();
var oldOpts = tabla.fnSettings();
var newOpts = $.extend(oldOpts, {
fnDrawCallback: function(oSettings) {
//Your code
}
tabla.fnDestroy();
$('#table').dataTable(newOpts);
Sebastianb
2017-01-24