如何扩展 Javascript 库以每次都使用相同的配置

How to extend a Javascript Lib to use the same config everytime

我正在使用 dataTables 在我的应用程序中显示几种不同类型的数据。每次我想要 table 时,我都需要调用该方法并将翻译对象与:

一起传递
oTable = $('.dTables').dataTable({
        "bJQueryUI": true,
        "sPaginationType": "full_numbers",
        "sDom": '<""l>t<"F"fp>',
        "columnDefs": [{
            "targets": 0,
            "render": function ( data, type, full, meta ) {
                var livro = data.split(';');
                return '<a href="/livro/ver/'+ livro[0] +'">'+ livro[1] +'</a>';
            }
        }],
        "language": {
            "search": "Buscar: ",
            "lengthMenu": "Mostrar _MENU_ itens por p&aacute;gina",
            "zeroRecords": "Nenhum registro",
            "info": "Mostrando _PAGE_ p&aacute;ginas de _PAGES_",
        }
    });

是否可以将 dataTable 对象扩展为始终使用同一对象,这样我就不必一遍又一遍地重复我的代码?

当然只是创建一个配置对象

var dTableConfig ={
    "bJQueryUI": true,
    "sPaginationType": "full_numbers",
    "sDom": '<""l>t<"F"fp>',
    "columnDefs": [{
        "targets": 0,
        "render": function ( data, type, full, meta ) {
            var livro = data.split(';');
            return '<a href="/livro/ver/'+ livro[0] +'">'+ livro[1] +'</a>';
        }
    }],
    "language": {
        "search": "Buscar: ",
        "lengthMenu": "Mostrar _MENU_ itens por p&aacute;gina",
        "zeroRecords": "Nenhum registro",
        "info": "Mostrando _PAGE_ p&aacute;ginas de _PAGES_",
    }
}

然后将该变量传递给插件的初始化:

oTable = $('.dTables').dataTable( dTableConfig );

然后,如果您有需要稍微不同配置的实例,可以执行以下操作:

var specialConfig = {
   "bJQueryUI": false
}

var specialTableOptions = $.extend(true,{}, dTableConfig , specialConfig);

specialTable= $('.dTables').dataTable( specialTableOptions );

如果您的目标是让 language 属性(或其他一些特定属性)对于应用程序中的不同 table 是相同的,the documentation建议扩展 $.fn.dataTable.defaults。使用您的 language 选项:

$.extend(true, $.fn.dataTable.defaults, {
    "language": {
        "search": "Buscar: ",
        "lengthMenu": "Mostrar _MENU_ itens por p&aacute;gina",
        "zeroRecords": "Nenhum registro",
        "info": "Mostrando _PAGE_ p&aacute;ginas de _PAGES_",
    }
});

然后当您在应用程序中创建 table 时,您不需要在选项对象中定义 language,只需要为特定 table 所需的选项定义属性.这是为大多数选项设置默认值的合适解决方案。