如何扩展 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ágina",
"zeroRecords": "Nenhum registro",
"info": "Mostrando _PAGE_ pá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ágina",
"zeroRecords": "Nenhum registro",
"info": "Mostrando _PAGE_ pá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ágina",
"zeroRecords": "Nenhum registro",
"info": "Mostrando _PAGE_ páginas de _PAGES_",
}
});
然后当您在应用程序中创建 table 时,您不需要在选项对象中定义 language
,只需要为特定 table 所需的选项定义属性.这是为大多数选项设置默认值的合适解决方案。
我正在使用 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ágina",
"zeroRecords": "Nenhum registro",
"info": "Mostrando _PAGE_ pá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ágina",
"zeroRecords": "Nenhum registro",
"info": "Mostrando _PAGE_ pá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ágina",
"zeroRecords": "Nenhum registro",
"info": "Mostrando _PAGE_ páginas de _PAGES_",
}
});
然后当您在应用程序中创建 table 时,您不需要在选项对象中定义 language
,只需要为特定 table 所需的选项定义属性.这是为大多数选项设置默认值的合适解决方案。