tabulator - 如何在制表器中通过 ajax 加载列
问题描述
我正在尝试使用以下内容在制表符 4.5 中加载列:
var table = new Tabulator("#tables", {
ajaxURL:"worker.php?data",
ajaxRequestFunc:queryRealm,
cellEdited:cEdit,
history:true,
clipboard:true,
//autoColumns:true,
clipboardPasteAction:"replace",
layout:"fitData",
columns:getColumns,
});
function getColumns(){
return new Promise(function(resolve, reject){
$.ajax({
url: "worker.php?columns",
success: function(data){
resolve(data);
},
error: function(error){
reject(error);
}
})
});
}
但我得到了错误:
tabulator.min.js:4 Uncaught TypeError: this.options.columns.slice is not a function
at t.u._clearObjectPointers (tabulator.min.js:4)
at t.u._create (tabulator.min.js:4)
at new t (tabulator.min.js:4)
at (index):84
请告诉我,如何通过 ajax 将列加载到制表器中?
解决方案
您不能将异步函数传递给 columns 参数。它需要一个列数组。
getColumns
因此,您应该从中获取值getColumns
,然后将其传递给 Tabulator 选项,而不是传递给 columns 选项。
我重新安排了你的代码,我相信这应该可行。
function getColumns(){
return new Promise(function(resolve, reject){
$.ajax({
url: "worker.php?columns",
success: function(data){
resolve(data);
},
error: function(error){
reject(error);
}
})
});
}
getColumns().then((columns) => {
var table = new Tabulator("#tables", {
ajaxURL:"worker.php?data",
ajaxRequestFunc:queryRealm,
cellEdited:cEdit,
history:true,
clipboard:true,
//autoColumns:true,
clipboardPasteAction:"replace",
layout:"fitData",
columns:columns,
});
});
推荐阅读
- php - 是否可以在多个工作人员类中传递/使用现有(实例化)类?
- azure - Azure Web 应用程序 - 列表和 Web 应用程序 - 列出函数 Rest API 响应为空
- speech-recognition - 用英语训练模型,但用另一种语言评估语音分类任务?
- android - 如何访问要在另一个函数(地图)中使用的 BroadcastReceiver 中的变量?
- angular - 事件绑定中的动态模板变量
- android - 水平动画 RecycleView,并将其项目居中
- c# - 为什么 net-core 3.1 中的 powershell 脚本在 Windows 7 中不起作用?
- java - 在源方法中调试时无法检查 catch 子句中的变量
- faust - 让浮士德代理等待其他代理完成
- xcode - 按需资源。找不到导出选项