我有以下datatables初始化方法,其中我使用preDrawCallback
函数根据表中的记录数隐藏和显示分页和过滤器。
由于它是webpack项目的一部分,因此我将其转换为es6,但由于无法找到一种无需使用this
来获取当前表的方法,因此不得不禁用该功能的对象简写:
$tables.DataTable({
preDrawCallback: function(settings) { // eslint-disable-line object-shorthand
const $table = $(this); // is there a way to get this table without using this?
// rest of code
}
})
仔细阅读了大量文档,似乎没有一个参数可以传入该表,而所有示例都使用$(this)
。
我的问题是我是否必须使用此函数,或者是否有其他获取表的方法,以便可以将命名函数更改为箭头函数?
更新
似乎我在看错问题,并且根本不需要使用箭头功能并修复了棉绒错误,从而解决了无需使用this
的需要(请参见下面的答案),但以防万一有人不想使用this
,经过大量控制台记录后,我发现当前表ID保留在传入的设置中,因此您可以
$(`#${settings.sTableId}`).DataTable();
答案 0 :(得分:2)
如您所说,如果未将值作为参数传递,则需要使用普通函数。普通功能和箭头功能对于this
具有不同的行为,因此您需要为作业选择合适的工具。
对于您看到的皮棉错误,它与箭头功能无关。只是告诉你这样写:
$tables.DataTable({
preDrawCallback(settings) { // <-- using shorthand on this line
const $table = $(this);
// rest of code
}
});