layui2.0使用table+laypage实现真分页


Posted in Javascript onJuly 27, 2019

前言:最近项目上使用layui做前端页面,发现layui的table本身的分页不能根据屏幕生成每页行数,所以研究了下文档,更改分页

简单解释:

1.最开始是根据屏幕计算加载的每页行数
2.framework可以糊了,由于是老项目还使用了sea.js
3.getUrlParam()是用于其他页面带参数跳转的也可以忽略

function getUrlParam(name) {
  var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象
  var r = window.location.search.substr(1).match(reg); //匹配目标参数
  if (r != null) return decodeURI(r[2]); return null; //返回参数值
 }

4.templet属性用于对后端接收到的数据进行格式化,其他属性请自行查看官方文档
5.laypage中的jump方法!first必须加,否则会无限调用接口,无法结束初始化

具体js代码如下:

function getData(page) {
  var rows = Math.floor(($(window).height() - $('.topNav').height()
   - $('.content .noBorderB').height()
   - $('.content .searchD').height()
   - $('.content .commonTb tr:eq(0)').height() - 100) / 30);
  rows = rows <= 0 ? 1 : rows;
  framework.hideLoading();
  var objectIdSearch = getUrlParam("objectId");
  if(objectIdSearch==''||objectIdSearch==undefined){
   objectIdSearch = $.trim($("#idSearch").val());
  }
  var pages=1;
  var counts=1;

  layui.use('table', function(){
   var table = layui.table;
   var laypage=layui.laypage;
   table.render({
    elem: '#test'
    // , url: {
    ,url:'/app/client/user/audio/listp'
    ,method:"get"
    ,where: {
     pageNo : page,
     pageSize : rows,
     objectId : objectIdSearch ,
     userId : $.trim($("#userIdSearch").val()),
     userName : $.trim($("#userNameSearch").val()),
     objectName : $.trim($("#audioNameSearch").val()),
     chapterName : $.trim($("#chapterNameSearch").val()),
     createTime : $.trim($("#createTime").val())
    }
    ,response:{
     statusName: 'page' //数据状态的字段名称,默认:code
     ,statusCode: page //成功的状态码,默认:0
     ,countName: 'records' //数据总数的字段名称,默认:count
     ,dataName: 'rows' //数据列表的字段名称,默认:data
    }
    // }
    , cellMinWidth: 80 //全局定义常规单元格的最小宽度,layui 2.2.1 新增
    , cols: [[
     {field: 'id', title: 'ID', align: 'center', sort: true,width:80}
     , {field: 'audioBook',width:80, align: 'center', title: '有声书ID', templet: function(d){
       return d.audioBook.id
      }} //width 支持:数字、百分比和不填写。你还可以通过 minWidth 参数局部定义当前单元格的最小宽度,layui 2.2.1 新增
     , {field: 'audioBook',width:124, align: 'center', title: '有声书名称', sort: true,templet: function(d){

      return d.audioBook.name
      }}
     , {field: 'objectType',width:80, align: 'center', title: '类型' , templet: function(d){
      if(d=='20'){
       return "有声书"
      }else{
       return "课程"
      }
     }}
     , {field: 'chapter',width:80, align: 'center', sort: true,title: '章节ID', templet: function(d){
      return d.chapter.id
     }}
     , {field: 'chapter.title',width:180, title: '章节名称', align: 'center', templet: function(d){
      return d.chapter.title
     }} //单元格内容水平居中
     , {field: 'payTimes',width:120, title: '购买次数', sort: true, align: 'center'} //单元格内容水平居中
     , {field: 'createTime',width:180, title: '购买时间', sort: true, align: 'center', templet: function(d){
      return longTrans2Date(d.createTime)
     }}
     , {field: 'userInfo',width:80, title: '用户ID', sort: true, align: 'center', templet: function(d){
      return d.userInfo.userId
     }}
     , {field: 'userInfo',width:160, title: '用户名称', sort: true, align: 'center', templet: function(d){
      return d.userInfo.userName
     }}
    ]]
    , done: function(res, curr, count){
     pages=res.page;
     counts=res.records;
     //完整功能
     laypage.render({
      elem: 'demo7'
      ,count: counts
      ,curr: pages
      ,limit:rows
      ,layout: ['count', 'prev', 'page', 'next', 'refresh', 'skip']
      ,jump: function(obj,first){
       // getData(obj.curr)
       if(!first){
        getData(obj.curr)
       }
      }
     });

    }
   });

  })

 }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
使用js实现雪花飘落效果
Aug 26 Javascript
JQuery插件fancybox无法在弹出层使用左右键的解决办法
Dec 25 Javascript
JavaScript学习笔记之Function对象
Jan 22 Javascript
JavaScript操作表单实例讲解(上)
Jun 20 Javascript
JavaScript下拉菜单功能实例代码
Mar 01 Javascript
jQuery阻止移动端遮罩层后页面滚动
Mar 15 Javascript
AngularJS实时获取并显示密码的方法
Feb 06 Javascript
Angular2 自定义表单验证器的实现方法
Dec 14 Javascript
js实现内置计时器
Dec 16 Javascript
vue实现全屏滚动效果(非fullpage.js)
Mar 07 Javascript
three.js 制作动态二维码的示例代码
Jul 31 Javascript
js基于canvas实现时钟组件
Feb 07 Javascript
微信小程序 腾讯地图显示偏差问题解决
Jul 27 #Javascript
基于layPage插件实现两种分页方式浅析
Jul 27 #Javascript
基于ssm框架实现layui分页效果
Jul 27 #Javascript
layUI实现前端分页和后端分页
Jul 27 #Javascript
layui实现数据分页功能(ajax异步)
Jul 27 #Javascript
layui实现数据表格table分页功能(ajax异步)
Jul 27 #Javascript
layui实现数据分页功能
Jul 27 #Javascript
You might like
php 表单数据的获取代码
2009/03/10 PHP
PHP 一个随机字符串生成代码
2010/05/26 PHP
浅析php数据类型转换
2014/01/09 PHP
Yii框架登录流程分析
2014/12/03 PHP
在Mac OS上搭建Nginx+PHP+MySQL开发环境的教程
2015/12/21 PHP
PHP数据的提交与过滤基本操作实例详解
2016/11/11 PHP
PHP mkdir创建文件夹实现方法解析
2020/11/13 PHP
Extjs TimeField 显示正常时间格式的代码
2011/06/28 Javascript
event.X和event.clientX的区别分析
2011/10/06 Javascript
js添加table的行和列 具体实现方法
2013/07/22 Javascript
window resize和scroll事件的基本优化思路
2014/04/29 Javascript
教你在heroku云平台上部署Node.js应用
2014/07/30 Javascript
JS实现可调整倒计时间代码分享
2015/08/18 Javascript
基于Jquery代码实现手风琴菜单
2015/11/19 Javascript
jquery validate表单验证的基本用法入门
2016/01/18 Javascript
jQuery EasyUI右键菜单实现关闭标签/选项卡
2016/10/10 Javascript
微信小程序支付前端源码
2018/08/29 Javascript
JavaScript canvas实现雪花随机动态飘落
2020/02/08 Javascript
[51:00]Secret vs VGJ.S 2018国际邀请赛淘汰赛BO3 第一场 8.24
2018/08/25 DOTA
PyCharm安装第三方库如Requests的图文教程
2018/05/18 Python
Python 实现数据结构-循环队列的操作方法
2019/07/17 Python
Python学习笔记之错误和异常及访问错误消息详解
2019/08/08 Python
tensorflow获取预训练模型某层参数并赋值到当前网络指定层方式
2020/01/24 Python
python安装mysql的依赖包mysql-python操作
2021/01/01 Python
CSS3 按钮边框动画的实现
2020/11/12 HTML / CSS
EJB2和EJB3在架构上的不同点
2014/09/29 面试题
大学校园生活自我鉴定
2014/01/13 职场文书
创业大赛策划书
2014/03/01 职场文书
园艺师求职信
2014/04/27 职场文书
交警失职检讨书
2015/01/26 职场文书
2015年七年级班主任工作总结
2015/05/21 职场文书
大国崛起观后感
2015/06/02 职场文书
会议主持词结束语
2015/07/03 职场文书
小学体育课教学反思
2016/02/16 职场文书
python解决12306登录验证码的实现
2021/04/18 Python
HTML5页面音频自动播放的实现方式
2021/06/21 HTML / CSS