Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在javascript对象(DataTables)中添加参数?_Javascript_Datatables_Tabletools - Fatal编程技术网

如何在javascript对象(DataTables)中添加参数?

如何在javascript对象(DataTables)中添加参数?,javascript,datatables,tabletools,Javascript,Datatables,Tabletools,我想用以下参数构建一个DataTable var table3 = $('#msg').dataTable({ "scrollY": calcDataTableHeight(), "scrollCollapse": true, "paging": false, "bInfo": false, "order": [[0, "desc"]], "dom": "Tfrt

我想用以下参数构建一个DataTable

var table3 = $('#msg').dataTable({
    "scrollY":          calcDataTableHeight(),
    "scrollCollapse":   true,
    "paging":           false,
    "bInfo":            false,
    "order":            [[0, "desc"]],
    "dom": "Tfrtip",
    "ajax": {
        "url": "includes/DataTables-1.10.4/extensions/Editor-1.3.3/php/table.msg.php",
        "data": function (d){
            d.cat = cat;
        },
        "type": "POST"
    }
});
有些参数取决于变量。因此,如果需要,我想将这些添加到对象中

if (buttons == true) {
add this to table 3
        "tableTools": {
        "sRowSelect": "os",
        "aButtons": [
            { "sExtends": "editor_create", "editor": editor },
            { "sExtends": "editor_edit",   "editor": editor },
            { "sExtends": "editor_remove", "editor": editor }
        ]
    }

我该怎么做?我做了很多尝试,但都没有成功。

将选项构建为对象,完成后将其传递给DataTables

例如:

 var options = {
    "scrollY":          calcDataTableHeight(),
    "scrollCollapse":   true,
    "paging":           false,
    "bInfo":            false,
    "order":            [[0, "desc"]],
    "dom": "Tfrtip",
    "ajax": {
        "url": "includes/DataTables-1.10.4/extensions/Editor-1.3.3/php/table.msg.php",
        "data": function (d){
            d.cat = cat;
        },
        "type": "POST"
    }
};

if (buttons == true) {
   options['tableTools'] = {
      "sRowSelect": "os",
      "aButtons": [
         { "sExtends": "editor_create", "editor": editor },
         { "sExtends": "editor_edit",   "editor": editor }
      ]
   };

   if (showRemoveBtn) {
      options['tableTools']['aButtons'].push(
         { "sExtends": "editor_remove", "editor": editor }
      );
   }
}

var table3 = $('#msg').dataTable(options);

如果您愿意,也可以使用进行初始化。

如果您需要使用不同的参数初始化插件,您可以通过扩展以下选项来构建一个facade函数,为您处理此问题:

var showDataTable = (function($) {

    var _defaults = {
        "scrollY":        calcDataTableHeight(),
        "scrollCollapse": true,
        "paging":         false,
        "bInfo":          false,
        "order":          [[0, "desc"]],
        "dom":            "Tfrtip",
        "ajax": {
            "url": "includes/DataTables-1.10.4/extensions/Editor-1.3.3/php/table.msg.php",
            "type": "POST",
            "data": function (data) {
                //do something with data
            }
        }
    };

    function calcDataTableHeight() {
        //implementation
    }

    // Initializes "dataTable" plugin
    function showDataTable (selector, options) {
        if (!selector) return;
        var config = $.extend(true, {}, _defaults, options);
        return $(selector).dataTable(config);
    }

    return showDataTable;
}(jQuery));
您可以按如下方式使用它:

if (buttons) {
    //initializes by extending options
    showDataTable("#msg", {
        "tableTools": {
            "sRowSelect": "os",
            "aButtons": [
                { "sExtends": "editor_create", "editor": editor },
                { "sExtends": "editor_edit",   "editor": editor },
                { "sExtends": "editor_remove", "editor": editor }
            ]
        }
    });
} else {
    //initializes with default options
    showDataTable("#msg");
}

table3.tableTools={…},可以通过facade模式和闭包轻松实现。我鼓励您学习更多关于JavaScript的知识,以编写可伸缩和可扩展的代码;)还有一件事。如何根据需要附加参数?因此,创建和编辑的两行是固定的,删除取决于if?