如何将自定义参数传递给dataTables footerCallback

时间:2016-07-06 10:20:45

标签: jquery datatables

我想在jQuery dataTables中为1添加一个自定义参数。

这是我的代码的一部分:

2

但是收到错误,

  

TypeError:this.api不是函数
  var api = this.api(),data;

我哪里错了?

1 个答案:

答案 0 :(得分:1)

您正尝试访问this上不存在的dataTable API。每个dataTable方法或回调都会返回API或可通过this上下文访问的API,但如果您想在自己的函数中对this.api()进行操作,则必须自行传递。您可以使用apply()

致电dataTableFooterCallback()来完成此操作
footerCallback: function() {
  dataTableFooterCallback.apply(this, arguments)
}

现在您已将this传递给dataTableFooterCallback,并且可以访问API:

function dataTableFooterCallback(type, row, data, start, end, display) {
  //get first row trough the API
  console.log(this.api().row(0).data())
  //rest of passed arguments same as footerCallback()
  console.log(arguments)
}

演示 - >的 http://jsfiddle.net/95h3a8nw/

arguments添加额外变量有点棘手,因为arguments不是真正的数组,它没有push()等原型方法。此解决方法将起作用:

footerCallback: function() {
  var newArguments = Array.prototype.slice.call(arguments)
  newArguments.push('client')
  dataTableFooterCallback.apply(this, newArguments)
}

现在在dataTableFooterCallback() 'client'中添加了函数调用中的最后一个参数。查看更新的小提琴 - >的 http://jsfiddle.net/95h3a8nw/1/