layui表格使用自定义模板templet

前言

在前文 layui+springboot实现表格增删改查 中,我们展示了如何使用layui将数据库数据渲染到前端表格中,但现在问题来了,如果不加特殊处理,前端表格直接显示数据库存储信息是不合适的,例如数据库有一个类型字段:0和1,0表示国产,1表示进口,前端显然不能直接显示0和1,而是应该根据后端返回的数字进行判断,展示相应的内容。

layui table的自定义模板功能能非常方便地解决这个问题,首先看下效果图。

数据库数据:
在这里插入图片描述
前端展示:
在这里插入图片描述
甚至,更复杂一些,将select下拉选择框和switch开关集成到table表格里(具体的实现请见https://blog.csdn.net/mu_wind/article/details/106598666):
在这里插入图片描述
后端返回的完整数据:

{{
	"msg": "操作成功!",
	"code": "0",
	"data": [
		{
			"id": 1,
			"name": "iPhone",
			"type": "0",
			"price": 6000.0,
			"size": 55,
			"status": 0,
			"description": "说明"
		},
		{
			"id": 2,
			"name": "watch",
			"type": "1",
			"price": 500.0,
			"size": 35,
			"status": 1,
			"description": "说明"
		},
		{
			"id": 3,
			"name": "television",
			"type": "1",
			"price": 1000.0,
			"size": 90,
			"status": 1,
			"description": "说明"
		},
		{
			"id": 4,
			"name": "computer",
			"type": "1",
			"price": 4500.0,
			"size": 60,
			"status": 1,
			"description": "说明"
		}
	],
	"count": 4
}}

方式一:函数转义

所谓函数转义,就是在表格cols的对应列中直接写一段函数:

table.render({
    elem: '#goods_table'
    , id: 'goodsReload'
    , url: '/test/getGoodsInfo'
    , method: 'get'
    , title: '用户表'
    , toolbar: '#goods_headerBar' //开启工具栏,此处显示默认图标,可以自定义模板,详见文档
    , cols:
        [[{type: 'checkbox', fixed: true},
           {
            field: 'type',
            title: '类 型',
            width: 100,
            align: 'center',
            // data就是行数据:{"id": 1,"name": "iPhone","type": "1","price": 6000.0,"size": 55,"status": 0,"description": "说明"}
            templet: function (d) {
                var type = d.type;
                if (type == 0) {
                    return '<font color="#0000FF">国&ensp;产</font>';
                } else {
                    return '<font color="#5FB878">进&ensp;口</font>';
                }
            }
        }
        // 其他行省略,可去【前端系列-3】获得完整代码
        {
            fixed: 'right',
            title: '操作',
            toolbar: '#goos_lineBar',
            align: 'center',
            width: 120,
            style: 'font-size:13px'
        }
    ]]
});

这样的写法,简单直接,缺点是复用性差,有可能导致代码冗余。

方式二:绑定模版选择器

下述是templet对应的模板,它可以存放在页面的任意位置。模板遵循于 laytpl 语法,可读取到返回的所有数据。

<script type="text/html" id="typeTpl">
    {{#  if(d.type ==0 ){ }}
    <p style="color: #0000FF">&ensp;</p>
    {{#  } else { }}
    <p style="color: #00FF00">&ensp;</p>
    {{#  } }}
</script>

table.render中的对应列templet内容中直接引用上面的模板即可

table.render({
    elem: '#goods_table'
    , id: 'goodsReload'
    , url: '/test/getGoodsInfo'
    , method: 'get'
    , title: '用户表'
    , toolbar: '#goods_headerBar' //开启工具栏,此处显示默认图标,可以自定义模板,详见文档
    , cols:
        [[{type: 'checkbox', fixed: true},
           {
                field: 'type',
                title: '类&emsp;型',
                width: 100,
                align: 'center',
                templet: '#typeTpl'
            }
           // 其他行省略,可去【前端系列-3】获得完整代码
           {
                fixed: 'right',
                title: '操作',
                toolbar: '#goos_lineBar',
                align: 'center',
                width: 120,
                style: 'font-size:13px'
            }
        ]]
});

这样的话,如果有多处表格使用同一个模板,代码复用性将得到加强。

还有一种方式:直接赋值模版字符

templet: '<div><a href="/detail/{{d.id}}" class="layui-table-link">{{d.title}}</a></div>'
 
注意:这里一定要被一层 <div></div> 包裹,否则无法读取到模板
  • 11
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
LayUI 是一款轻量级的前端 UI 框架,提供了许多实用的组件,包括表格组件。使用 LayUI表格组件可以方便地实现数据的展示、排序、分页、筛选等功能。 以下是 LayUI 表格组件的使用步骤: 1. 引入 LayUI 的 CSS 和 JS 文件: ```html <link rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/layui/2.5.6/css/layui.css"> <script src="https://cdn.bootcdn.net/ajax/libs/layui/2.5.6/layui.js"></script> ``` 2. 编写 HTML 代码,包含表格容器和表格结构: ```html <div class="layui-container"> <table class="layui-table" lay-data="{url: 'data.json'}" lay-filter="demo"> <thead> <tr> <th lay-data="{field:'id', width:80}">ID</th> <th lay-data="{field:'username', width:120}">用户名</th> <th lay-data="{field:'email', width:200}">邮箱</th> <th lay-data="{field:'sex', width:80, templet:'#sexTpl'}">性别</th> <th lay-data="{field:'city'}">城市</th> <th lay-data="{field:'sign', width:200}">签名</th> <th lay-data="{field:'experience', sort:true, width:120}">积分</th> <th lay-data="{field:'score', sort:true, width:120}">评分</th> <th lay-data="{fixed: 'right', width:150, toolbar: '#barDemo'}">操作</th> </tr> </thead> </table> </div> <!-- 表格数据模板 --> <script type="text/html" id="sexTpl"> {{# if(d.sex === 1){ }} 男 {{# } else if(d.sex === 2) { }} 女 {{# } else { }} 未知 {{# } }} </script> <!-- 表格操作模板 --> <script type="text/html" id="barDemo"> <a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a> <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a> </script> ``` 其中,`lay-data` 属性用来配置表格的数据源、列信息和事件监听器,`lay-filter` 属性用来标识表格实例的名称。 3. 初始化表格组件: ```javascript layui.use('table', function(){ var table = layui.table; // 监听表格操作事件 table.on('tool(demo)', function(obj){ var data = obj.data; if(obj.event === 'edit'){ // 编辑操作 } else if(obj.event === 'del'){ // 删除操作 } }); // 渲染表格 table.render({ elem: '.layui-table', height: 500, page: true, url: 'data.json', toolbar: '#toolbarDemo', cols: [[ {field:'id', width:80, title: 'ID'}, {field:'username', width:120, title: '用户名'}, {field:'email', width:200, title: '邮箱'}, {field:'sex', width:80, title: '性别', templet:'#sexTpl'}, {field:'city', title: '城市'}, {field:'sign', width:200, title: '签名'}, {field:'experience', width:120, title: '积分', sort:true}, {field:'score', width:120, title: '评分', sort:true}, {fixed: 'right', width:150, align:'center', toolbar: '#barDemo', title: '操作'} ]] }); }); ``` 其中,`table.render` 方法用来初始化表格实例,配置表格的相关属性,如数据源、列信息、分页、排序等。`table.on` 方法用来监听表格的操作事件,如编辑、删除等。 以上就是 LayUI 表格组件的基本使用方法。需要注意的是,表格组件还支持更多高级功能,如多级表头、自定义列、批量操作等,可以参考官方文档进行使用

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云深i不知处

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值