Tabulator v5.0配置dataLoader加载提示、无数据占位符不生效问题咨询
Tabulator 5.x 自定义异步加载(meteor.call场景)加载器/空状态/错误状态不生效解决方案
Tabulator 内置的 dataLoader: true 配置仅对框架自带的ajax请求、官方DataLoader模块的内置异步加载逻辑生效,你通过外部meteor.call()自定义拉取数据的逻辑,Tabulator无法感知数据加载的全流程状态,所以原有配置不会触发对应提示。
修复步骤
- 第一步:调整初始化配置,移除初始化时的data赋值,保留你已配置的加载、错误、空状态提示模板:
const table = new Tabulator("#你的表格元素ID", { height: "100%", dataLoaderLoading: `<div style='display:inline-block; border:4px solid #333; border-radius:10px; background:#fff; font-weight:bold; font-size:16px; color:#000; padding:10px 20px;'>Loading Data</div>`, dataLoaderError: `<div style='display:inline-block; border:4px solid #D00; border-radius:10px; background:#fff; font-weight:bold; font-size:16px; color:#590000; padding:10px 20px;'>Loading Error</div>`, layout: "fitColumns", placeholder: "No Data Available", // 其他列、事件等原有配置保留 })
- 第二步:调整
meteor.call逻辑,通过Tabulator公开的手动状态方法触发对应提示:
// 调用接口前手动触发加载状态 table.setDataLoading() meteor.call('你的接口方法名', 你的请求参数, (error, result) => { if (error) { // 接口报错时触发错误提示 table.setDataError() return } // 接口返回成功后赋值数据,加载状态自动取消 // 若result为空数组,会自动展示placeholder配置的无数据提示 table.setData(result) })
注意事项
- 必须持有Tabulator实例后才能调用
setDataLoading/setDataError/setData方法,初始化时不要提前给data赋值,否则会直接跳过加载状态渲染 - 如果你的
this.selector.get()是同步获取数据的方法,需要在初始化表格前先触发加载状态,拿到数据后再调用setData赋值即可
内容的提问来源于stack exchange,提问作者Azi
相关产品推荐
相关产品推荐

