编写扩展时,Jquery DataTables在preInit上默认“dom”命令更新

时间:2016-06-22 15:42:07

标签: javascript jquery datatables

下面的代码工作正常。我可以在_constructor中编写扩展逻辑,扩展默认值将在所有表中覆盖。

(function(window, document, undefined){

var factory = function($, DataTable) {
    "use strict";

    $.extend(true, DataTable.defaults, {
        dom: '<"dataTablesTop"' +
            'f' +
            '<"dataTables_toolbar">' +
            '>' +
            'rt' +
            '<"dataTablesBottom"' +
            'lip' +
            '>'
    });

    myExtension.prototype = {
            _constructor: function(){
                  ....
            }
    }

    ....

    return myExtension;

})(window, document);

但我的预期结果是根据与DataTables初始化一起传递的配置值应用扩展覆盖。

var oTable = $('#table').DataTable({
     myExtension: true
});

理想情况下应该是这样的,

(function(window, document, undefined){

var factory = function($, DataTable) {
    "use strict";

    myExtension.prototype = {
            _constructor: function(){
                if(settings.myExtension){
                   $.extend(true, DataTable.defaults, {
                       dom: '<"dataTablesTop"' +
                            'f' +
                            '<"dataTables_toolbar">' +
                            '>' +
                            'rt' +
                            '<"dataTablesBottom"' +
                            'lip' +
                            '>'
                   });
                }
            }
    }

    .....

    return myExtension;


})(window, document);

任何人都知道如何实现它?

1 个答案:

答案 0 :(得分:0)

目前看来这是不可能的。 DataTables在'preInit'回调之前初始化dom元素。因此看起来需要在构建阶段推送/注入其他元素。

参考:https://datatables.net/forums/discussion/25342/init-dt-is-not-fired-before-the-first-xhr-event#Comment_69825