Как сократить эти повторные параметры плагина jQuery? - PullRequest
2 голосов
/ 28 августа 2010

Я использую плагин DataTables jQuery.То, как я хочу, чтобы мои таблицы работали, хотя и означает, что я передаю множество параметров плагину для отключения вещей:

$('table.data').dataTable( {
    'aoColumns': [
        null,
        { 'bSortable': false },
        { 'bSortable': false },
        { 'asSorting': ['desc','asc'], 'sType': 'blanks' },
        { 'asSorting': ['desc','asc'] }
    ],
    'bPaginate': false,
    'bAutoWidth': false,
    'bInfo': false,
    'bProcessing': true,
    'asStripClasses': [],
    'sDom': 'rt'
} );

На разных страницах параметр aoColumns будет меняться в зависимости от таблицы,но остальные параметры остаются прежними.Что было бы лучшим способом сохранить повторяющийся код снова и снова (и сделать это проще, если я передумал о параметре позже)?

Я пытался сохранить параметр с помощью {'bPaginate': false ...}, но это создает подпрограмму-объект.Может быть, есть способ «объединить» объекты встроенные или что-то?

Ответы [ 2 ]

2 голосов
/ 28 августа 2010

Если вы делаете это часто, вы можете добавить свой собственный jQuery плагин :

jQuery.fn.myDataTable = function(aoColumns) {
    return this.dataTable({
        'aoColumns': aoColumns,
        'bPaginate': false,
        'bAutoWidth': false,
        'bInfo': false,
        'bProcessing': true,
        'asStripClasses': [],
        'sDom': 'rt'
    });
};
2 голосов
/ 28 августа 2010

Поместите повторно используемые в переменную:

var reused = {
   'bPaginate': false,'bAutoWidth': false,
    'bInfo': false,
    'bProcessing': true,
    'asStripClasses': [],
    'sDom': 'rt'
}

Затем используйте $.extend, чтобы объединить уникальные данные:

$('table.data').dataTable( 
    $.extend(
        {},  // Empty target that is extended and passed to dataTable 
        reused, // Extend with the stored reused data
        {'aoColumns': [ // Extend with an object containing the unique propertie(s)
               null,
               { 'bSortable': false },
               { 'bSortable': false },
               { 'asSorting': ['desc','asc'], 'sType': 'blanks' },
               { 'asSorting': ['desc','asc'] }
            ]
        }
    )
);

РЕДАКТИРОВАТЬ: Один из моих приближенных был } вместо ).Исправлено.

Обратите внимание, что если вы хотите переопределить одно из ваших свойств reused, вы можете просто добавить другой объект в $.extend() в любом месте после переменной reused.Это не влияет на предметы, хранящиеся в reused.

$.extend(
        {},  
        reused,
        {'bInfo': true}, // override one of the properties in "reused"
        {aoColumns:// ...etc
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...