一、引用js依赖

jquery-1.11.3.min.js , layui.all.js, json2.js

二、js分页方法封装(分页使用模板laytpl)

1、模板渲染

/**
 * 分页模板的渲染方法
 * @param templateId 分页需要渲染的模板的id
 * @param resultContentId 模板渲染后显示在页面的内容的容器id
 * @param data 服务器返回的json对象
 */
function renderTemplate(templateId, resultContentId, data){
  layuiuse(['form','laytpl'], function(){
    var laytpl = layui.laytpl;
    laytpl($("#"+templateId).html()).render(data, function(html){
      $("#"+resultContentId).html(html);
    });
  });
  layui.form().render();// 渲染
};
 
2、layui.laypage 分页封装
/**
 * layuilaypage 分页封装
 * @param laypageDivId 分页控件Div层的id
 * @param pageParams 分页的参数
 * @param templateId 分页需要渲染的模板的id
 * @param resultContentId 模板渲染后显示在页面的内容的容器id
 * @param url 向服务器请求分页的url链接地址
 */
function renderPageData(laypageDivId, pageParams, templateId, resultContentId, url){
  if(isNull(pageParams)){
    pageParams = {
      pageIndex : 1,
      pageSize : 10
    }
  }
  $ajax({
    url : url,//basePath + '/sysMenu/pageSysMenu',
    method : 'post',
    data : pageParams,//JSON.stringify(datasub)
    async : true,
    complete : function (XHR, TS){},
    error : function(XMLHttpRequest, textStatus, errorThrown) {
      if("error"==textStatus){
        error("服务器未响应,请稍候再试");
      }else{
        error("操作失败,textStatus="+textStatus);
      }
    },
    success : function(data) {
      var jsonObj;
      if('object' == typeof data){
        jsonObj = data;
      }else{
        jsonObj = JSON.parse(data);
      }
      renderTemplate(templateId, resultContentId, jsonObj);
        
      //重新初始化分页插件
      layui.use(['form','laypage'], function(){
        laypage = layui.laypage;
        laypage({
          cont : laypageDivId,
          curr : jsonObj.pager.pageIndex,
          pages : jsonObj.pager.totalPage,
          skip : true,
          jump: function(obj, first){//obj是一个object类型。包括了分页的所有配置信息。first一个Boolean类,检测页面是否初始加载。非常有用,可避免无限刷新。
            pageParams.pageIndex = obj.curr;
            pageParams.pageSize = jsonObj.pager.pageSize;
            if(!first){
              renderPageData(laypageDivId, pageParams, templateId, resultContentId, url);
            }
          }
        });
      });
    }
  });
};
 
3、刷新当前分页的方法,可省略
/**
 * 分页插件刷新当前页的数据,必须有跳转的确定按钮,因为根据按钮点击事件刷新
 */
function reloadCurrentPage(){
  $(".layui-laypage-btn").click();
};
 
三、页面代码
 
<!-- 分页表格 -->
<div class="layui-form">
 <table class="layui-table">
  <thead>
   <tr>
    <th class="w20"><input type="checkbox" name="checkBoxAll" lay-skin="primary" lay-filter="allChoose"></th>
   <th class="w200">许可名称</th>
   <th class="w200">许可编码</th>
   <th class="w200">菜单名称</th>
   <th>许可链接</th>
  </tr
   </thead>
   <tbody id="page_template_body_id">
  </tbody>
 </table>
</div>
<!-- 分页控件div -->   
<div id="imovie-page-div"></div>
 
2、分页模板
<script id="page_template_id" type="text/html">
{{# layui.each(d.list, function(index, item){ }}
<tr>
  <td><input type="checkbox" name="permissionId" lay-skin="primary" value="{{item.permissionId}}"></td>
  <td>{{item.permissionName || ''}}</td>
  <td>{{item.permissionCode || ''}}</td>
  <td>{{item.menuName || ''}}</td>
  <td>{{item.permissionUrl || ''}}</td>
</tr>
{{# }); }}
</script>
 
3、分页执行代码:
 
分页参数:
function getPageParams(){
  var pageParams = {
  pageIndex : 1,
  pageSize : 2
  };
  pageParams.permissionName = $("input[name='permissionName']").val();
  pageParams.permissionCode = $("input[name='permissionCode']").val();
  pageParams.menuName = $("input[name='menuName']").val();
  return pageParams;
};
 
分页执行方法:
function initPage(){
  renderPageData("imovie-page-div", getPageParams(), "page_template_id"
      "page_template_body_id", basePath + '/sysPermission/pageSysPermission');
};
 
页面加载初始化分页:
$(function(){
  initPage();
});
 
如果包括上面效果图的查询,如下:
 
Html页面代码
<div>
      <form class="layui-form layui-form-pane">
        <div class="layui-form-item">
          <div class="layui-inline">
            <label class="layui-form-label">许可名称</label>
            <div class="layui-input-inline">
              <input type="text" name="permissionName" 
                autocomplete="off" class="layui-input" placeholder="请输入许可名称" >
            </div>
          </div>
          <div class="layui-inline">
            <label class="layui-form-label">许可编码</label>
            <div class="layui-input-inline">
              <input type="text" name="permissionCode" 
                autocomplete="off" placeholder="请输入许可编码" class="layui-input">
            </div>
          </div>
          <div class="layui-inline">
            <label class="layui-form-label">菜单名称</label>
            <div class="layui-input-inline layui-input-inline-0">
              <input type="text" name="menuName" 
                autocomplete="off" placeholder="请选择菜单名称" class="layui-input">
                
            </div>
          </div>
          <div class="layui-inline">
            <button id="btnSubmit" class="layui-btn" lay-submit="" lay-filter="formFilter">查询</button>
          </div>
        </div>
      </form>
    </div>
 
 
查询语句:
$(function(){
  initPage();
    
  layui.use(['form'], function(){
    var form = layui.form();
    //监听提交
    formon('submit(formFilter)', function(data){
      initPage();
      return false;
    });
       
       
  });
});
 
 
 

layui 通过laytpl模板,以及laypage分页实现的更多相关文章

  1. LayUI分页,LayUI动态分页,LayUI laypage分页,LayUI laypage刷新当前页

    LayUI分页,LayUI动态分页,LayUI laypage分页,LayUI laypage刷新当前页 >>>>>>>>>>>> ...

  2. layui.laytpl 模板引擎用法

    目录 layui下载地址: 最终效果: 模板引擎文档 手册地址: 以下是代码思路: layui下载地址: https://www.layui.com/ 最终效果: 模板引擎文档 手册地址: https ...

  3. 拿来主义:layPage分页插件的使用

    布衣之谈 所谓插件,大概就是项目中可插可拔的比较小功能化的组件:这些功能组件若能力可及,自己也可以完成——也即自己造轮子,但翻看各种技术社区,相关领域的神人们往往会有更好的实现方案贡献出来,这个时候你 ...

  4. 如何基于layui的laytpl实现数据绑定

    想了半天才想起自己园子的登录密码.可想而知,多长时间没登录了 正文一开始用layui做了几个管理系统,所以用起来觉得确实很容易上手,管理后台最常用的就是form和table以及弹窗类.layui提供的 ...

  5. laytpl模板——怎么使用ajax与数据交互

    第一次在项目中用laytpl模板,下面是一些使用过程中的探索,希望对小伙伴们有所帮助. 注:第一次使用这个模板的小伙伴建议先去看看官网 laytpl <script type="tex ...

  6. doT.js模板和pagination分页应用

    doT.js模板和pagination分页应用 博客中模拟了数据加载初始化的过程.doT.js渲染每一项内容的数据项.示例如下: <script id="Messtmpl" ...

  7. 基于layPage分页插件浅析两种分页方式

    最近在开发过程中经常用到分页,今天挤出些时间来捋一捋自己的经验 在web开发中,一般显示数据列表页时,我们会用到分页控件来显示数据.采用分页一般基于两种不同的需求,一种是数据量不算很大,但是在页面展示 ...

  8. 记录项目中用的laypage分页代码

    最终才觉得,好记性不如烂笔头,毕竟已经不是刚毕业时候的巅峰了,精力有所下降,很多时候记不住东西. 参考url:http://www.layui.com/laypage/ 直接上代码了 <scri ...

  9. layui之layer打开table后分页无效的解决方法

    1.原代码: <body> <div id="showalladdableavms" style="display: none;width:100%&q ...

随机推荐

  1. 爬虫之图片懒加载技术、selenium工具与PhantomJS无头浏览器

    图片懒加载技术 selenium爬虫简单使用 2.1 selenium简介 2.2 selenium安装 2.3 selenium简单使用 2.3.1 selenium使用案例 2.3.2 selen ...

  2. 8.1Go并发

    第八章 Go并发 Go语言区别于其他语言的一大特点就是出色的并发性能,最重要的一个特性那就是go关键字. 并发场景: UI小姐姐一边开着PS软件,一边微信疯狂的和产品经理打字交流,后台还听着网易云音乐 ...

  3. kubernetes flannel pod CrashLoopBackoff解决

    背景 某环境客户部署了一个kubernetes集群,发现flannel的pod一直重启,始终处于CrashLoopBackOff状态. 排查 对于始终CrashLoopBackOff的pod,一般是应 ...

  4. 在DAO的查询操作里,数据库查询到记录,sql语句也成功执行,但是返回的对象是null

     在这里  如果改成User user=null; 后面 对user对象的赋值是会失败的. 原因: 要赋值的话,一定要有对象,要new一下给对象分配空间然后再给对象赋值.

  5. 基于postman测试接口(整套接口测试)

    基于postman测试接口(整套接口测试) 可以解决的问题 几百个接口人工测试接口过于繁杂 大多测试无法使用请求结果当参数 可以使用随机参数 支持swagger信息导入 随账号持久化保存数据 对集合一 ...

  6. 【python爬虫】scrapy入门4--添加cookies

    (1) settings.py 取消注释:COOKIES_ENABLED = True (2)爬虫xx.py def parse(self, response): c_dic = {自己抓包} # 获 ...

  7. SPL常用函数

    使用SPL_AUTOLOAD_REGISTER装载类 <?php /** * libs/Test.class.php */ class Test { function __construct() ...

  8. C语言Printf()规定符号

    %d 十进制有符号整数 %u 十进制无符号整数 %f 浮点数 %s 字符串 %c 单个字符 %p 指针的值 %e 指数形式的浮点数 %x, %X 无符号以十六进制表示的整数 %o 无符号以八进制表示的 ...

  9. Kubernetes实战 - 从零开始搭建微服务 - 1.5 提高可用性-发布多节点的Node/Express网络应用程序

    1.5 提高可用性-发布多节点的Node/Express网络应用程序 Kubernetes实战 - 从零开始搭建微服务 前言 在上一篇文章中,已经学习了如何简单地开发一个单层网络应用.[Kuberne ...

  10. 附件2:async/await

    在实际开发中总会遇到许多异步的问题,最常见的场景便是接口请求之后一定要等一段时间才能得到结果,如果遇到多个接口前后依赖,那么问题就变得复杂.大家都一直在尝试使用更好的方案来解决这些问题.最开始只能利用 ...