我有以下设计
function crudDataTable()
{
this.addEditFormContainerSelector = '';
this.paginationType = "full_numbers"; // Provide Pagination Type
this.processing = true;
this.serverSide = true; //I want this this to be accessible in fnRowCallback below:
this.create = function(){
this.tableInstance = $(this.tableLocationSelector).DataTable({
"sPaginationType": this.paginationType
fnRowCallback:function(nRow, aData) {
// "this" from crudDataTable should be accessible here
}
})
}
}
我希望this
中可以访问crudDataTable
中的 fnRowCallback
。
我怎样才能实现这一点?fnRowCallback
组件也会触发datatable
,所以这不在我的掌控之中。如何在this
下访问 fnRowCallback
。
或者如果这是不可能的,那么实现它的其他方法是什么?
我正在尝试编写一个组件,这些组件的用户可以简单地设置其变量并调用create函数。我正面临着在this
函数中访问 fnRowCallback
的挑战。
感谢。
答案 0 :(得分:2)
您可以在回调之外存储对this
的引用:
var table = this;
this.tableInstance = $(this.tableLocationSelector).DataTable({
"sPaginationType": this.paginationType,
fnRowCallback: function(nRow, aData) {
//Use `table` to refer to the instance of `crudDataTable`
}
});
或者,您可以使用ES5 bind
method(但请注意旧浏览器不支持它):
this.tableInstance = $(this.tableLocationSelector).DataTable({
"sPaginationType": this.paginationType,
fnRowCallback: function(nRow, aData) {
//Use `this` to refer to the instance of `crudDataTable`
}.bind(this);
});