layui实现数据分页功能(laytpl模板引擎分页加载)

以前layui分页使用Jquery拼接元素进行渲染,感觉比较麻烦而且不够优雅,后来使用了其他分页方式一直没有时间更新,现在记录下用layui的模板引擎laytpl对分页数据进行渲染。

一:引入layUI的相关资源

<link rel="stylesheet" href="${ctxPath}/vendor/layui-v2.4.5/layui/css/layui.css">
<script src="${ctxPath}/vendor/layui-v2.4.5/layui/layui.js"></script>
<script src="${ctxPath}/vendor/jquery.min.js"></script>//引入jquery包

二:html页面代码

<div class="layui-main g-main">
   <div class="layui-row">
       <div class="layui-col-xs12">
           <table class="layui-table">
               <thead>
                   <tr>
                       <th>积分类型</th>
                       <th>积分原因</th>
                       <th>积分值</th>
                       <th>创建时间</th>
                   </tr>
               </thead >
               
               <tbody id="tableList">
				//使用模板引擎渲染数据
               </tbody>
               
           </table>
           
           //分页渲染
           <div id="page" style="text-align: center;"></div>
           
       </div>
   </div>
</div>

三:模板js

<script id="tpl" type="text/html">
  {{#  layui.each(d, function(index, item){ }}
	  <tr>
	      <td>{{item.type}}</td>
	      <td>{{item.reason}}</td>
	      <td>{{item.sum}}</td>
	      <td>{{item.time}}</td>
     </tr>
  {{#  }); }}
</script>

四:分页加载渲染

为了便于大家查看,就不按方法拆分为几个代码片段分别展示了,注意看代码注释说明。

<script>
	layui.use(['laytpl','laypage','jquery','form'],function(){
	    let laypage = layui.laypage,$ = layui.$, laytpl = layui.laytpl;
	    
		//模板引擎--自定义工具类
	    let _tplUtil = {
	    
	      //请求数据
	      request : function(param){
	        $.ajax({
	          type   		: param.method || 'get',
	          url    		: param.url    || '',
	          dataType 	: param.type || 'json',
	          data 		: param.data || '',
	          async 	: param.async || true,
	          success 	: function(res){
	            typeof param.success === 'function' && param.success(res);
	          },
	          error     : function(err){
	            typeof param.error === 'function' && param.error(err.statusText);
	          }
	        });
	      },
	      //渲染数据到模板,返回html
	      renderHtml : function(htmlTemplate, data){
	        let template = laytpl(htmlTemplate),
	                result = template.render(data);
	        return result;
	      },
	      //**导入并渲染模板数据**
	      loadTplData : function(tplId,elementId,url,params) {
	        // 模版引擎导入
	        let html = $('#'+tplId).html();
	        let element = $('#'+elementId);
	        _tplUtil.request({
	          type: 'get',
	          url: url,
	          dataType: 'json',
	          data: params,
	          async: false,
	          success : function(res){
	            element.innerHTML = _tplUtil.renderHtml(html,res)
	          },
	          error: function(res){
	            console.log(res);
	          }
	        })
	      }
	    }
	
		
		//请求参数的封装
	    function showData(pageNo,pageSize) {
	      let params = {
	        pageNo: pageNo,
	        pageSize: pageSize
	        //...如果还需要进行条件查询,可在此传入查询参数,进行参数封装
	      }
		  //调用模板引擎加载并渲染数据
	      _tplUtil.loadTplData('tpl','tableList','/recard/findData',params);
	    }
		
		//分页渲染
	    $.get('/recard/getTotal', function (total) {
	      laypage.render({
	        elem: $("#page") //分页元素
	        , count: total //数据总数,从服务端得到
	        , limit: 10                      //默认每页显示条数
	        , limits: [10, 20, 30]           //可选择的每页显示条数
	        , curr: 1                        //起始页
	        , groups: 5                      //连续页码个数
	        , prev: '上一页'                 //上一页文本
	        , netx: '下一页'                 //下一页文本
	        , first: 1                      //首页文本
	        , last: 100                     //尾页文本
	        , layout: ['prev', 'page', 'next', 'limit', 'refresh', 'count', 'skip']
	        //跳转页码时调用
	        , jump: function (obj, first) { //obj为当前页的属性和方法,第一次加载first为true
	          pageNo = obj.curr;
	          pageSize = obj.limit;
	
	          //调用函数封装参数,加载数据
	          showData(obj.curr, obj.limit);
	        }
	      })
	    }, 'json');
	
	  });
  </script>

以上代码不局限于table表格分页,如果只是table表格分页查询,推荐使用layui自带分页功能,可以参考下面的博客。

表格分页推荐:使用layui的table组件自带分页功能(异步,含条件查询)点这里


欢迎访问本文的个人博客链接: https://br-bai.github.io/2020/03/15/LayUI实现数据分页功能(laytpl模板引擎分页加载)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值