通俗易懂,Layui前端框架!
前言
layui 是一款采用自身模块规范编写的前端 UI 框架,遵循原生 HTML/CSS/JS 的书写与组织形式,门槛极低,拿来即用。其外在极简,却又不失饱满的内在,体积轻盈,组件丰盈,从核心代码到 API 的每一处细节都经过精心雕琢,非常适合界面的快速开发。它更多是为后端程序员量身定做,你无需涉足各种前端工具的复杂配置,只需面对浏览器本身,让一切你所需要的元素与交互,从这里信手拈来。
一、Layui 光速入门
1. 官网下载解压
Layui官网 https://www.layui.com/
2. layui资源引入
css 引入
<link rel="stylesheet" type="text/css" href="layui/css/layui.css"/>js 引入
<script src="layui/layui.js" type="text/javascript" charset="utf-8"></script>>
3. layui 模块化使用 (需要什么模块就加载什么模块)
- 使用格式
 
layui.use(["模块名","模块名"],function(){
	layui.模块名
});
- 使用实例:此处我们调用弹出层模块,调用弹出层模块方法即可
 
<script type="text/javascript">
	layui.use("layer",function(){
		layui.layer.msg("hello");
	});
</script>
我们访问html页面会弹出写有hello的弹出层;调用模块需要的模块名都能够在官网获取。
到此我们已经完成layui的入门任务。由于layui其他内容过于简单,在此不做过多赘述,详情请移步官网了解。本文主要是关于layui数据表格的实现。
二、layui 数据表格
1.准备数据
注:数据表格访问的数据接口的格式固定,格式如下
{
	"code":0,
	"msg":"",
	"count":数量,
	"data":[
		{},
		{}
	]
}
- 准备数据 user.json
 
{
    "code":0,
    "msg":"",
    "count":50,
    "data":[
        {
            "id":1000,
            "username":"user1",
            "sex":"女",
            "city":"城市1",
            "sign":"签名1"
        },
        {
            "id":1001,
            "username":"user1",
            "sex":"女",
            "city":"城市1",
            "sign":"签名1"
        },
        {
            "id":1002,
            "username":"user1",
            "sex":"女",
            "city":"城市1",
            "sign":"签名1"
        },
        {
            "id":1003,
            "username":"user1",
            "sex":"女",
            "city":"城市1",
            "sign":"签名1"
        },
        {
            "id":1004,
            "username":"user1",
            "sex":"女",
            "city":"城市1",
            "sign":"签名1"
        }
    ]
}
2.数据渲染
- 方法渲染 (常用)
- table.render()返回一个对象
 
 
<table id="demo"></table>
<script src="layui/layui.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
	layui.use("table",function(){
		let table = layui.table;
		table.render({
			//容器对应的id属性
			elem: '#demo',
			//数据接口
			url: 'user.json',
			cols: [[
				//field:要与接口中返回数据的键保持一致  title:表头
				{field:'id',title:'ID',width:80,sort:true,fixed:'left'},
				{field:'username',title:'用户名',width:80},
				{field:'sex',title:'性别',width:80,sort:true},
				{field:'city',title:'城市',width:80},
				{field:'sign',title:'签名',width:120},
			]]
		});
	});
</script>

- 自动渲染
- 给table设置class标签
 
 
<table class="layui-table" lay-data="{url:'user.json'}">
	<thead>
		<tr>
			<th lay-data="{field:'id',sort:true}">ID</th>
			<th lay-data="{field:'username'}">用户名</th>
			<th lay-data="{field:'sex'}">性别</th>
			<th lay-data="{field:'city'}">城市</th>
			<th lay-data="{field:'sign'}">签名</th>
		</tr>
	</thead>
</table>

3.头部工具栏
(1). 定义头部工具栏
<!-- 表头工具栏 -->
<script id="toolbarDemo" type="text/html">
	<div class="layui-btn-container">
		<button class="layui-btn layui-btn-sm" lay-event="getCheckData">获取选中行数据</button>
		<button class="layui-btn layui-btn-sm" lay-event="getCheckLength">获取选中数目</button>
		<button class="layui-btn layui-btn-sm" lay-event="isAll">验证是否全选</button>
	</div>
</script>  
(2). 将头部工具栏绑定到表格
<table id="demoTest" lay-filter="demoTest"></table>
<script type="text/javascript">
	layui.use("table",function(){
		let table = layui.table;
		table.render({
			elem: '#demoTest',
			url: 'user.json',
			cols: [[
				{"type":"checkbox"},
				{field:'id',title:'ID',width:80,sort:true,fixed:'left'},
				{field:'username',title:'用户名',width:80},
				{field:'sex',title:'性别',width:80,sort:true},
				{field:'city',title:'城市',width:80},
				{field:'sign',title:'签名',width:120},
			]],
			toolbar:'#toolbarDemo'//表头工具栏在这绑定
		});
	});
</script>  
使用toolbar属性,获取头部工具栏的id并绑定,显示效果如下

(3). 绑定头部工具栏监听事件 (与js事件绑定不同)
- 格式
 
table.on('toolbar(表格元素设置的lay-filter属性值)',function(data){
	//data.event代表的是头部工具栏中按钮设置的lay-event属性值
	//获取当前表格被选中的记录对象,返回数组,data.config.id表示当前选择器的id属性值 即demoTest
	let checkStatus = table.checkStatus(data.config.id);
});  
- 实现
 
table.on('toolbar(demoTest)',function(data){//代码放在layui.user的函数中
	let checkStatus = table.checkStatus(data.config.id);
	console.log(checkStatus);
	if(data.event == "getCheckData"){
		let result = checkStatus.data;
		layer.alert(JSON.stringify(result));
	}else if(data.event == "getCheckLength"){
		layer.msg("选中数量为:"+checkStatus.data.length);
	}else if(data.event == "isAll"){
		layer.msg("是否全选:"+checkStatus.isAll);
	}
});  



4.行工具栏
(1). 定义行工具栏
<!-- 行工具栏 -->
<script id="barDemo" type="text/html">
	<div class="layui-btn-container">
		<a class="layui-btn layui-btn-xs" lay-event="datail">查看</a>
		<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>
	</div>
</script>  
(2). 将头部工具栏绑定到表格
<table id="demoTest" lay-filter="demoTest"></table>
<script type="text/javascript">
	layui.use("table",function(){
		let table = layui.table;
		table.render({
			elem: '#demoTest',
			url: 'user.json',
			cols: [[
				{"type":"checkbox"},
				{field:'id',title:'ID',width:80,sort:true,fixed:'left'},
				{field:'username',title:'用户名',width:80},
				{field:'sex',title:'性别',width:80,sort:true},
				{field:'city',title:'城市',width:80},
				{field:'sign',title:'签名',width:120},
				{title:'操作',toolbar:'#barDemo'}//行工具栏在这绑定
			]],
			toolbar:'#toolbarDemo'
		});
	});
</script>  
使用cols属性绑定,显示效果如下

(3). 绑定行工具栏监听事件 (与js事件绑定不同)
- 格式
 
table.on('tool(表格元素设置的lay-filter属性值)',function(data){
});
- 实现
 
table.on('tool(demoTest)',function(data){//代码放在layui.user的函数中
	if(data.event == "edit"){
		//添加自己的事件
		console.log("编辑");
	}else if(data.event == "del"){
		//添加自己的事件
		console.log("删除");
	}
});
4.开启编辑
(1). 开启 只需要在需要编辑的标签加edit标签并指明编辑类型
<!-- 行工具栏 -->
table.render({//代码放在layui.user的函数中
	elem: '#demoTest',
	url: 'user.json',
	cols: [[
		{"type":"checkbox"},
		{field:'id',title:'ID',width:80,sort:true},
		{field:'username',title:'用户名',width:80,edit:'text'},//此处添加edit:'text'表明用户名可以被编辑
		{field:'sex',title:'性别',width:80,sort:true},
		{field:'city',title:'城市',width:80},
		{field:'sign',title:'签名',width:120},
		{title:'操作',toolbar:'#barDemo'}
	]],
	toolbar:'#toolbarDemo'
});  
(2). 添加事件监听
table.on('edit(demoTest)',function(obj){
	let value = obj.value,//修改后的值
	data = obj.data,//得到所在行所有键值
	field = obj.field;//得到字段
	layer.msg('[用户名:'+data.username+']'+field+'[字段更改为:'+value+']');
});
用户名字段可编辑,但只是dom操作,修改数据需要自家添加逻辑,显示效果如下


5.数据表格的重载 (常用于搜索功能)
(1). 添加搜索框
<!-- 在表格之上加入搜索框 -->
<div class="demoTable">
	搜索ID:
	<div class="layui-inline">
		<input class="layui-input" name="id" id="demoReload" autocomplete="off">
	</div>
	<button class="layui-btn" id="searchBtn">搜索</button>
</div>  
(2). 表格重载
document.getElementById("searchBtn").onclick = function(){//代码放在layui.user的函数中
	//获取搜索框对象
	let demoReload = document.getElementById("demoReload");
	//重载
	table.reload('demoTest',{
		where:{//设定异步数据接口的额外参数,任意设
			id:demoReload.value
		},
		page:{
			//让条件查询从第一页开始查询,不写则从当前页开始查询
			curr:1
		}
	});//只重载数据
}
此处通过原生js实现,建议尝试引入jquery实现,效果为搜索的同时,表格数据会进行重载

总结
本文主要是对layui数据表格学习的总结,其他内容请参考官网教程https://www.layui.com/
通俗易懂,Layui前端框架!的更多相关文章
- 利用layui前端框架实现对不同文件夹的多文件上传
		
利用layui前端框架实现对不同文件夹的多文件上传 问题场景: 普通的input标签实现多文件上传时,只能对同一个文件夹下的多个文件进行上传,如果要同时上传两个或多个文件夹下的文件,是无法实现的.这篇 ...
 - layui前端框架
		
项目中需要弹出层效果,使用了layui前端框架,主要使用了里面的弹出层特效(可以移动) html代码 要给这个标签绑定click方法 <a href='javascript:;' data-me ...
 - layui前端框架实例(修复官网数据接口异常问题)
		
layui前端框架实例,官网的实例会提示数据接口异常,已修复. 主要是修改数据表格,做一个可以用的实例,可以选中,编辑,删除等. gitee地址:https://gitee.com/pingg2019 ...
 - layui前端框架之分页
		
框架环境:SSM框架 为了保证效果,此次演示也用到了jQuery ui框架,大家最好也引入进来 一.去layui官网下载包,解压后,然后导入文件中,最好放再main/webapp文件夹下 官网地址如下 ...
 - LayUi前端框架删除数据缓存问题(解决删除后刷新页面内容又会显示问题)
		
form.on('submit(mySearch)', function(data){ table.reload('userTable', {//就会读取后台数据,重新加载: page: { curr ...
 - 用layui前端框架弹出form表单以及提交
		
第一步:引用两个文件 第二步:点击删除按钮弹出提示框 /*删除开始*/ $(".del").click(function () { var id = $(this).attr(&q ...
 - 整合X-Admin前端框架改造ABP
		
“站在巨人的肩膀上”,这样一来,不要万事亲恭,在值得的方向上节约时间,毕竟人生就这么一次.在接触ABP以来,一直想花点时间整合LayUI前端框架到ABP中,进而能够逐渐打磨出一套适合自己的框架,开发习 ...
 - 分享一个登录页面(前端框架layui)-20200318
		
效果图 对该页面的总结: 1.前端框架layui layui官网:https://www.layui.com/,下载之后,简单配置就可使用 2.layui模块引用与使用的方式 <script&g ...
 - Java程序员必备后台前端框架--Layui【从入门到实战】(一)
		
layui入门使用及图标的使用 作者 : Stanley 罗昊 [转载请注明出处和署名,谢谢!] [编程工具:IDEA] 下载Layui与文件分析 下载直接去官网下载即可 文件分析 下载完成后,解压会 ...
 
随机推荐
- io中的特殊流Properties
			
对于去年学习IO的时候一些代码贴上来: 初识properties,因为继承自hashtable,其中可以使用put操作: package special; import java.util.Prope ...
 - mysql索引基本介绍
			
转载:https://blog.csdn.net/weixin_34392906/article/details/93707682 转载于:https://www.cnblogs.com/maohui ...
 - 判断宽度的js
			
<script language="javascript" type="text/javascript">/*将获取的值存到变量里*/width_s ...
 - APMserv 5.2.6 安装教程
			
1.下载APMServ5.2.6.rar压缩包后解压,得到文件APMServ5.1.2.exe,其余两个没什么大用,APMServ解压缩说明.txt可以看一下,里面详细介绍了APMServ的功能和注意 ...
 - shell传参和变量赋值
			
1.变量赋值方式 (1)方式1--直接赋值(=) (2)方式2--read交互式赋值 (3)方式3--脚本传参赋值 2.read read -p "请输入你的名字和年龄:" nam ...
 - 硕盟 type-c转接头转接口(HDMI+VGA+USB3.0+PD3.0)四合一拓展坞
			
硕盟SM-T54是一款 TYPE C转HDMI+VGA+USB3.0+PD3.0四合一多功能扩展坞,支持四口同时使用,您可以将含有USB 3.1协议的电脑主机,通过此产品连接到具有HDMI或VGA的显 ...
 - python3.x内置函数
			
函数 返回值类型 函数详情 abs(x) int|float 求绝对值,若是复数则返回复数的模 all(iterable) bool 若所有元素为真则返回True(非0,非空,非None) any(i ...
 - Elaticsearch倒排索引
			
ES倒排索引基本原理 索引(index)可以分为正序索引(Forward Indexes)和倒排索引(Inverted Index)两种.在关系型数据库中使用索引可以避免数据检索走全表扫描,将检索的时 ...
 - 学习PHP中Fileinfo扩展的使用
			
今天来学习的这个扩展其实现在也已经是标配的一个扩展了,为什么呢?因为 Laravel 框架在安装的时候它就是必须的一个扩展,没有打开它的话,连 Laravel 框架都是无法使用的. Fileinfo ...
 - 小学生都能读懂的网络协议之:WebSocket
			
目录 简介 webSocket vs HTTP HTTP upgrade header websocket的优点 webScoket的应用 websocket的握手流程 WebSocket API 总 ...