的Javascript传递参数箭头功能

我创建一个jQuery数据表中的一类,它的工作原理,但我有与下面的代码段的一些问题:的Javascript传递参数箭头功能

let table = $("#" + this.name).DataTable(); 

table.on('click', 'tr td.details-control', function() {

let detailRows = [];

let tr = $(this).closest('tr');

let row = table.row(tr);

let idx = $.inArray(tr.attr('id'), detailRows);

if (row.child.isShown()) {

tr.removeClass('details');

row.child.hide();

detailRows.splice(idx, 1);

}

else {

tr.addClass('details');

let rowData = table.row(tr).data();

row.child(this.formatChildRows(rowData)).show();

if (idx === -1) {

detailRows.push(tr.attr('id'));

}

}

});

,因为道路“这个”作品

table.on('click', 'tr td.details-control', (event) => { 

...

});

功能现在运行但“表”:在JavaScript中,函数formatChildRows不再发现,因为这不再是指类,但到表行,我改变,像这样的代码解决了这个变量不再可访问,因为它在箭头函数中未定义。

我尝试很多东西,如:

evt => function(table) {} 

代替:

(event) => 

我想这可能工作,但在函数内部的代码不再被某种原因执行。

任何想法?

回答:

这应该工作:

const self = this; 

table.on('click', 'tr td.details-control', function (event){

row.child(self.formatChildRows(rowData)).show();

...

});

但如果这是可能的,你应该避免this关键字,例如,你应该直接引用对象objectName.formatChildRows()

以上是 的Javascript传递参数箭头功能 的全部内容, 来源链接: utcz.com/qa/258486.html

回到顶部