Layui表格loading动画仅在配置url且发起异步请求时生效;local数据或无url时即使设loading:true也不显示。需确保table.reload()含有效url,response字段匹配,分页参数名一致,并通过Network确认请求发出。
loading 配置项怎么设才生效
layui 表格的 loading 动画只在通过 url 异步加载数据时触发,如果只是本地数据(data 配置)或没配 url,哪怕写了 loading: true 也不会显示——这是最常被忽略的前提。
-
loading: true:启用默认旋转图标(Layui v2.9.10+ 会自动加layui-anim-rotate动画) -
loading: false:彻底禁用,连 DOM 节点都不渲染 -
loading: '<i class="layui-icon..."></i> 加载中':v2.9.10+ 支持 HTML 字符串,可自定义结构和文案
注意:loading 不是开关式配置,它依赖表格是否发起网络请求。若你手动调用 table.reload() 但没传 url 或参数错误导致请求未发出,动画照样不出现。
done 回调里关闭 loading 的正确姿势
表格本身不提供“关闭 loading”的 API,它的 loading 是自动管理的:数据成功返回并渲染完,动画就自动消失。所以你不需要、也不该在 done 里手动关它——除非你用了 layer.load() 这类全局 loading。
- 用
table.render({ loading: true })→ 不用管关闭,Layui 自己处理 - 用
var index = layer.load(1)+table.render(...)→ 必须在done或error里调layer.close(index) - 如果
done没执行,检查response配置是否匹配后端返回字段(比如后端返回code: 0,但你写了statusCode: 1),会导致表格认为“加载失败”,done跳过,layer.load就一直挂着
兼容旧版本或想换动画样式怎么办
v2.9.10 之前不支持 HTML 字符串,且默认 loading 样式固定在 .layui-table-loading-icon 里。这时只能靠 CSS 覆盖,但要注意选择器优先级。
- 必须用更具体的路径,比如
#myTable .layui-table-loading-icon或加!important(不推荐,但有时真得加) - 动画失效?检查是否漏了
layui-anim基础类,或者自定义 keyframes 名称冲突 - 想完全替换图标?直接重写
.layui-table-loading-icon i的content或background,但别删掉i元素本身——Layui 依赖它存在来控制显隐
分页点击时 loading 不出现?查这个点
默认情况下,Layui 分页点击会自动触发 table.reload() 并复用原 loading 配置。但如果表格初始化时没设 url,或 where 参数动态变更后导致请求被拦截(如权限校验失败返回空响应),分页就会静默失败,loading 也不闪。
- 打开浏览器 Network 面板,点分页时看有没有新请求发出
- 确认
request.pageName和后端接收参数名一致(常见坑:前端写page,后端要pageNum) - 不想每次分页都等 loading?可临时设
loading: false,改用before钩子(需自行 patch 或监听table.on('page(test)'))
真正麻烦的不是怎么开或关,而是 loading 看似没反应时,你得先分清:是没触发、触发了但没渲染、还是渲染了但被 CSS 盖住了——三者调试路径完全不同。











