最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Layui表格怎么把状态码0和1转换成中文描述
时间:2026-06-17 09:47:57 编辑:袖梨 来源:一聚教程网
Layui表格中status字段需用templet函数前端转换为“启用”“禁用”等中文,不可修改原始数据;导出时需手动映射状态值,注意后端返回类型(number/string/boolean)并做兼容处理。
layui table 中 status 字段显示为“启用”“禁用”
直接在 cols 配置里用 templet 函数处理,别碰后端返回的原始数字。layui 不支持字段级枚举映射,必须前端转。
常见错误是试图在 data 渲染前遍历修改原始数组——这会破坏响应式更新,且分页重载时失效。
- 用
templet: function(d) { return d.status === 0 ? '禁用' : '启用'; } - 如果状态还有其他值(比如
2表示“审核中”),必须显式判断,else分支不能只写'启用',否则undefined也会被当启用 - 注意:
d.status是原始值,类型可能是字符串(后端吐了字符串 "0"),建议统一用Number(d.status) === 0或d.status == 0(宽松比较更稳妥)
templet 里调用外部函数做状态映射
状态逻辑复杂或复用时,别把判断逻辑塞进 templet 匿名函数里。抽成独立函数,可读性和维护性高得多。
典型场景:同一页面多个表格都要渲染状态,或状态文案要走 i18n。
- 定义映射函数:
const statusText = (v) => ({ '0': '禁用', '1': '启用', '2': '审核中' }[v] || '未知'); - 在列配置中写:
templet: d => statusText(d.status) - 避免写成
templet: function(d) { return statusText(d.status); }——没差别,但箭头函数更轻量 - 注意:对象 key 是字符串,所以
d.status是数字时也要自动转字符串(对象属性访问会隐式转换),但显式写String(d.status)更安心
服务端返回 status 是布尔值 true/false 怎么办
Layui 表格不认布尔值,templet 里直接用 d.status 会得到 true/false,不是 0/1。
别改后端接口,前端兼容即可。重点是别用 == 1 这类判断,布尔值走不通。
- 安全写法:
templet: d => d.status ? '启用' : '禁用' - 如果后端可能返回
null或undefined,加兜底:templet: d => d.status === true ? '启用' : d.status === false ? '禁用' : '未知' - 不要写
d.status == 1——true == 1是true,但false == 0也是true,容易误判
表格导出 Excel 时状态还是 0/1 怎么同步中文
导出功能(table.exportFile())默认导出原始数据,templet 不生效。想导出中文,得干预数据源。
本质是导出前替换字段值,不是渲染问题。
- 导出前手动映射:
table.exportFile('user', table.cache['user'].map(d => ({...d, status: statusText(d.status)})), 'csv'); - 如果用了分页,
table.cache['xxx']只有当前页数据;要导出全部,需提前调用table.reloadData(..., { done: ... })拉全量再导出 - 注意:
exportFile第二个参数是纯数据数组,不走任何模板或格式化,所有转换必须手动做