Layui如何实现在表格中实时显示当前在线用户的头像列表

秋涛酱_3259

秋涛酱_3259

2026-05-09

800人浏览

原创

Layui表格中头像列表须用函数型templet遍历avatars数组,兜底空值并限制显示前3个;每个img需加onerror降级默认图,URL须后端预拼完整且启用HTTP缓存。

layui table 中如何用 templet 渲染头像列表

直接在 cols 里配 templet,别试图用 format 或后端拼 html 字符串。layui 的表格列模板只认函数返回值或字符串模板,且必须返回合法 html 片段。

常见错误是把头像数组丢进一个字段(比如 avatars),然后在模板里写死 data.avatars[0] —— 这只能显示第一个,而且没容错。

  • 正确做法:用函数型 templet 遍历 data.avatars,每个头像加 layui-avatar 类(可选)和 title 提示用户名
  • 头像数量多时建议限制显示前 3 个,避免行高失控;可用 Math.min(data.avatars.length, 3)
  • 务必检查 data.avatars 是否为数组,空值、null、undefined 或字符串都要兜底,否则控制台报 Cannot read property 'length' of undefined
{
  field: 'avatars',
  title: '在线头像',
  templet: function(d) {
    if (!Array.isArray(d.avatars) || d.avatars.length === 0) return '<span class="layui-badge-rim">无</span>';
    return d.avatars.slice(0, 3).map(avatar => 
      '@@##@@'
    ).join('');
  }
}

后端返回的头像数据结构怎么设计才不翻车

Layui 表格不接受嵌套对象自动展开,avatars 字段必须是数组,不能是对象(如 {list: [...]})或字符串(如 "[...]")。

典型翻车点:Java 后端用 @ResponseBody 返回 Map,把头像列表塞进 result.put("avatars", userList),但忘了 userList 里的每个用户对象是否含 url 和 name 字段。

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

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

下载
  • 前端能直接用的最小结构是:[{"url": "https://...", "name": "张三"}, ...]
  • 如果后端只能返回 ID 列表(如 [101, 102]),就得前端再发请求查头像 —— 不推荐,会触发 N+1 请求,卡表格渲染
  • 若头像 URL 有权限控制(如需 token),后端应在返回时就拼好带签名的完整 URL,前端别自己拼 ?t=xxx

头像加载失败时如何静默降级

网络抖动或 CDN 404 会让 <img src="'%20+%20(avatar.url%20%7C%7C%20'/default-avatar.png')%20+%20%0A%20%20%20%20%20%20'" alt="' + (avatar.name || '用户') + '" title="' + (avatar.name || '用户') + '" style="width:24px;height:24px;border-radius:50%;margin-right:4px;"> 显示裂图,影响表格整洁度。Layui 没提供图片加载失败钩子,得手动绑定 onerror。

  • 在 templet 生成的 <img> 标签里加 onerror="this.src=\'/default-avatar.png\'"
  • 不要用 onerror="this.style.display=\'none\'",隐藏后留白难看,统一换默认图更可控
  • 如果默认图也要走 CDN,确保该地址绝对稳定;本地路径用相对路径(如 /static/img/default.png),避免协议错误

性能问题:100 行表格每行显示 5 个头像,页面会卡吗

会,但不是因为头像本身,而是 DOM 节点爆炸。100 × 5 = 500 个 <img> 标签 + 全部触发 onload/onerror 绑定,滚动时重绘压力大。

  • 真实项目中,用 lay-page 分页控制单页 ≤ 30 行;配合 page: {limit: 30}
  • 头像列表超过 3 个时,用「+2」气泡代替剩余项,例如:前 3 个头像 + <span class="layui-badge">+2</span>
  • 别给每个头像加 title(尤其是中文),tooltip 初始化有开销;真需要详情,改用点击弹层查全量

最易被忽略的是:头像 URL 没开 HTTP 缓存(Cache-Control: public, max-age=3600),导致每次刷新都重新下载 —— 这比渲染慢更伤体验。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

layui

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

2023.08.07

2095

5

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.23

3142

1

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

2023.10.13

1056

3

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

2025.09.10

3579

7

html5动画制作有哪些制作方法
html5动画制作有哪些制作方法

html5动画制作方法有使用CSS3动画、使用JavaScript动画库、使用HTML5 Canvas等。想了解更多html5动画制作方法相关内容,可以阅读本专题下面的文章。

2023.10.23

4051

6

HTML与HTML5的区别
HTML与HTML5的区别

HTML与HTML5的区别:1、html5支持矢量图形,html本身不支持;2、html5中可临时存储数据,html不行;3、html5新增了许多控件;4、html本身不支持音频和视频,html5支持;5、html无法处理不准确的语法,html5能够处理等等。想了解更多HTML与HTML5的相关内容,可以阅读本专题下面的文章。

2024.03.06

6948

6

html5从入门到精通汇总
html5从入门到精通汇总

想系统掌握HTML5开发?本合集精选全网优质学习资源,涵盖免费教程、实战项目、视频课程与权威电子书,从基础语法到高级特性(Canvas、本地存储、响应式布局等)一应俱全,适合零基础小白到进阶开发者,助你高效入门并精通HTML5前端开发。

2025.12.30

814

19

html5新老标签汇总
html5新老标签汇总

HTML5在2026年持续优化网页语义化与交互体验,不仅引入了如<header>、<nav>、<article>、<section>、<aside>、<footer>等结构化标签,还新增了<video>、<audio>、<canvas>、<figure>、<time>、<mark>等增强多媒体与

2025.12.30

694

12

html5空格代码怎么写
html5空格代码怎么写

在HTML5中,空格不能直接通过键盘空格键实现,需使用特定代码。本合集详解常用空格写法:&nbsp;(不间断空格)、&ensp;(半个中文空格)、&emsp;(一个中文空格)及CSS的white-space属性等方法,帮助开发者精准控制页面排版,避免因空格失效导致布局错乱,适用于新手入门与实战参考。

2025.12.30

373

8

热门下载

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

精品课程

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

共87课时 | 12.9万人学习

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

共89课时 | 11.1万人学习

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

共5课时 | 1.6万人学习