我在一个Angular2项目中使用DataTables的serverSide。
我想在进行更改之后重新加载表格,并通过AJAX将更改后的内容作为参数传递。
问题是,DataTables始终从初始化时获取options
对象,而不是更新后带有新参数的版本。
因此,我需要使用ajax.reload()
传递一组新参数。
这是我当前的函数:
filterData(tableParams) {
console.log('reloading DT. tableparams received are: ' + JSON.stringify(tableParams));
let element = $(this.el.nativeElement.children[0]);
let table = element.find('table.dataTable');
table.DataTable().ajax.reload();
}
目前,正如您所看到的,我没有使用 tableParams
,这是因为我想展示一个干净的函数版本。我尝试了很多方法,但都没有成功。
DataTables总是获取初始的options
对象和初始参数。
这是我绝望的尝试之一:
filterData(tableParams) {
let element = $(this.el.nativeElement.children[0]);
let table = element.find('table.dataTable');
table.DataTable({
ajax: {
url: this.jsonApiService.buildURL('/test_getUsers.php'),
type: 'POST',
data: tableParams,
},
}).ajax.reload();
}
非常感谢您的求助。如果您需要更多有关如何创建DataTable的解释或更多的代码片段,请告知我。但是我认为问题只出在
ajax.reload()
函数中,能够发送更新的参数将解决这个问题。非常感谢! 编辑1 这是我的初始
options
对象: let data = {
email: true,
test: 'init',
};
this.options = {
dom: 'Bfrtip',
processing: true,
serverSide: true,
pageLength: 20,
searchDelay: 1200,
ajax: {
url: this.jsonApiService.buildURL('/test_getUsers.php'),
type: 'POST',
data: data,
},
columns: [
{data: 'userId'},
{data: 'userCode'},
{data: 'userName'},
{data: 'userRole'},
{data: 'userEmail'},
],
};
以下是DataTables发送的参数:
(除了其他DataTables参数)
当我调用ajax.reload()
时,不管我尝试了什么,最终都会发送这些相同的参数,因此发送初始化参数。