【问题标题】:Append an object inside the datatable function在数据表函数中附加一个对象
【发布时间】:2022-01-09 17:06:09
【问题描述】:

需要在数据表函数内附加一个对象。我在我的应用程序的多个页面中有以下代码。我试图从应用程序中的一个通用 JS 文件中将一个对象附加到这个函数。

var table;
$(document).ready(function() {
table = $('#table').DataTable({ 
    dom: 'lBfrtip',
    lengthMenu: [
        [ 10, 25, 50, 100, -1 ],
        [ '10', '25', '50', 100, 'Show all' ]
    ],
    "processing": true, //Feature control the processing indicator.
    "serverSide": true, //Feature control DataTables' server-side processing mode.
    "columnDefs": [
    { 
        "targets": [ -1 ], //last column
        "orderable": false, //set not orderable
    },
    ],
});
});

我尝试在通用 JS 文件中将按钮属性推送到 DataTable 函数,如下所示:

table.push({buttons: [
    {
        text:'Save as PDF',
        className: "btn btn-primary",
        extend: 'pdfHtml5',
        download: 'open',
    }
]
});

但是得到这个错误:

Uncaught TypeError: Cannot read properties of undefined (reading 'push')

【问题讨论】:

  • 这是您的确切代码吗?你没有let table=$("#table").DataTable...var table=$("#table").DataTable... 吗?
  • 您的table.push 代码究竟在哪里?因为table 直到 doc.ready 之后才定义,所以如果您的推送代码在 doc.ready 之前运行,那么table 变量(推断的全局变量)将不会被定义——但这会给出table is not defined。所以你的变量存在(编辑:如编辑所示)但在 .push 运行时没有值
  • @freedomn-m 错过了添加 var 表;现在添加。
  • 你试图 .push 到一个没有被赋值的变量,所以 js 不知道应用哪个“推送”方法。如果你使用了错误的方法(我怀疑),那么你会得到push is not a function
  • @freedomn-m 明白了。你知道从不同的 JS 文件中推送按钮对象的正确方法吗?

标签: jquery datatables


【解决方案1】:

尝试将按钮添加到dataTable.defaults 对象:

$.extend(true, $.fn.dataTable.defaults, {
    buttons: [
        {
            text:'Save as PDF',
            className: "btn btn-primary",
            extend: 'pdfHtml5',
            download: 'open'
        }
    ]
});

【讨论】:

猜你喜欢
  • 2023-01-19
  • 1970-01-01
  • 2020-07-21
  • 1970-01-01
  • 2020-01-06
  • 2014-10-11
  • 1970-01-01
  • 2012-10-09
  • 1970-01-01
相关资源
最近更新 更多