讲师中心 微信公众号
AI工具推荐 视频效率加速

Layui数据表格如何实现根据后台返回的字段自动判断是否显示某列

冬浩大大_1145

冬浩大大_1145

发布时间:2026-06-27 12:57:37

|

287人浏览过

|

来源于php中文网

原创

Layui表格需动态生成cols配置以实现列显隐:依据后端返回的columns字段数组映射列定义,确保field与数据key一致,并在templet中判空防报错。

后端返回字段结构决定列显隐的判断逻辑

layui 的 table.render() 本身不支持“根据字段存在与否自动隐藏列”,必须手动控制 cols 配置。关键在于:把列定义从写死改为动态生成,依据后端返回的字段元数据(比如 columns 数组或 fields 列表)构造 cols[0]。

常见错误是直接在 cols 里写死所有字段,导致后端某列没返回时页面仍留空格或报错 Cannot read property 'xxx' of undefined。

  • 后端需额外返回一个字段描述数组,例如:{ "columns": ["id", "username", "email", "status"] }
  • 前端拿到该数组后,用 map() 构建列配置,只包含后端声明的字段
  • 每列的 field 必须与后端实际返回的数据 key 完全一致(注意大小写、下划线)
  • 若某列需要格式化(如状态转文字),在 templet 中加判空逻辑,避免 row.xxx 报错

动态生成 cols 并安全绑定 field

不要把 cols 写成静态数组,而是从后端字段列表映射出列配置。重点是:字段名存在才加列,且每个 field 值必须可被 row[field] 安全读取。

示例片段:

深蓝色网站后台管理系统layui框架模板-AdminPro
深蓝色网站后台管理系统layui框架模板-AdminPro

一款深蓝色网站后台管理系统layui框架模板

下载
// 假设 ajax 成功后拿到 data = { columns: ['id','name','score'], list: [...] }
const colsConfig = data.columns.map(key => {
  const colDef = { field: key, title: key }; // 可按 key 映射中文标题,如 { id: '编号', name: '姓名' }
  if (key === 'score') {
    colDef.templet = '<div>{{d.score || "-"}}</div>';
  }
  return colDef;
});

table.render({
  elem: '#demo',
  cols: [colsConfig], // 注意是数组套数组
  data: data.list,
  // 其他配置...
});
  • cols 是二维数组,外层数组对应表格行(通常只有一行表头),内层才是列数组
  • 如果后端返回的 columns 是空数组,colsConfig 就是空数组,渲染时会显示“暂无数据”——这是合理行为
  • 避免在 templet 中直接写 {{d.xxx}},应统一用 {{d[field] || '-'}} 或加 if 判断

后端未返回字段时 row 对象缺失 key 的兼容处理

Layui 渲染时,若某列 field: "phone",但某条数据 row 没有 phone 属性(后端没传),模板引擎会报 Cannot read property 'phone' of undefined,整行渲染失败。

  • 最稳妥是在后端保证返回数据结构一致(推荐),或在前端用 parseData 统一补全字段:parseData: res => { return { data: res.data.map(d => Object.assign({ phone: '' }, d)) } }
  • 不用 lay-data 或 data-field 等 HTML 方式定义列,它们无法动态化
  • 如果使用 templet 函数而非字符串模板,函数参数 d 就是完整 row,可自由判空:templet: d => d.phone || '<span class="gray">-</span>'

字段别名与多级嵌套字段的注意事项

当后端返回的是嵌套结构(如 { user: { name: '张三' } })或字段带别名(如 "user_name"),field 不能直接写 "user.name" —— Layui 不支持点号路径解析。

  • 要么后端扁平化数据(推荐),例如返回 { userName: '张三' },field: 'userName'
  • 要么用 templet 函数手动取值:templet: d => d.user?.name || ''
  • 若用 laytpl 字符串模板,{{d.user && d.user.name}} 可行,但不如函数模板清晰可控
  • 字段名含特殊字符(如 user-name)会导致 row["user-name"] 访问失败,后端应改用下划线或驼峰

真正麻烦的不是“怎么让列消失”,而是“字段缺失时如何不让整个表格崩掉”。动态列只是表象,底层要解决的是数据契约一致性问题。

热门AI工具

更多
创客贴AI

创客贴AI是一款AI图像与设计工具,AI辅助的智能在线设计工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

相关专题

更多
ajax教程
ajax教程

php中文网为大家带来ajax教程合集,Ajax是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,Ajax可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。php中文网还为大家带来ajax的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

3060

2023.06.14

ajax中文乱码解决方法
ajax中文乱码解决方法

ajax中文乱码解决方法有设置请求头部的字符编码、在服务器端设置响应头部的字符编码和使用encodeURIComponent对中文进行编码。本专题为大家提供ajax中文乱码相关的文章、下载、课程内容,供大家免费下载体验。

360

2023.08.31

ajax传递中文乱码怎么办
ajax传递中文乱码怎么办

ajax传递中文乱码的解决办法:1、设置统一的编码方式;2、服务器端编码;3、客户端解码;4、设置HTTP响应头;5、使用JSON格式。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2873

2023.11.15

ajax网站有哪些
ajax网站有哪些

使用ajax的网站有谷歌、维基百科、脸书、纽约时报、亚马逊、stackoverflow、twitter、hacker news、shopify和basecamp等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1161

2024.09.24

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

60

2026.10.22

Gradle Wrapper配置教程
Gradle Wrapper配置教程

本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。

40

2026.10.22

Golangci-lint检查器使用教程
Golangci-lint检查器使用教程

本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。

40

2026.10.22

Gradle怎么构建Java项目
Gradle怎么构建Java项目

本专题介绍Gradle Java项目构建方法,涵盖Java插件配置、依赖声明、源码编译、测试执行和打包检查,帮助你理解各阶段的任务关系,逐步完成项目构建。

20

2026.10.22

PHP时间戳漏洞修复教程
PHP时间戳漏洞修复教程

本专题汇总PHP常见时间戳漏洞,包括2038年溢出、时区漂移、时间戳伪造、重放攻击、时间盲注与日志审计失效等,并给出升级64位环境、使用 DateTimeImmutable、统一UTC、严格超时校验、预处理绑定、hash_equals 比对等修复方案,帮助开发者快速排查和加固时间相关代码。

40

2026.10.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
ThinkPHP配置开发与CMS后台实战
ThinkPHP配置开发与CMS后台实战

共87课时 | 13.1万人学习

第二十三期_综合实战
第二十三期_综合实战

共89课时 | 11.3万人学习

Layui 快速入门精讲
Layui 快速入门精讲

共5课时 | 1.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn