🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
> layPage是一款多功能的js分页组件,即适用于异步分页,又可用于传统的整页刷新跳页,还支持信息流加载,并且可无缝迁移至Node.js平台。layPage不依赖于任何第三方库,直接拿来用即可,它的接口继承了layui系列组件的一贯简洁,极易上手。 看完这些官方的解释之后,让我来直接拿一个直观的例子,让你对这款插件的应用有个大致的了解吧。首先,我们在 index\\controller 下面新建一个 Tools.php,在其中新建一个 layPage 方法: ~~~ <?php namespace app\index\controller; use think\Controller; class Tools extends Controller { // laypage 分页插件演示 public function layPage() { if(request()->isAjax()){ } return $this->fetch(); } } ~~~ 这个方法方便我们渲染一个页面,来方便演示后面的功能。 **下载 laypage 插件:** 进入 layepage 的[laypage 官网](http://www.layui.com/laypage/)点击下载插件。然后加压出一个叫 laypage 的文件加,把他放入 public\\static 下面: ![](https://box.kancloud.cn/f8e0a23a57500e6e11d4498d3b525e7b_193x144.jpg) 下面我来看一下,页面渲染部分应该做哪些工作。我们在 application\\index\\view 下面新建一个 tools 文件夹,并在其中新建一个laypage.html: ~~~ <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>laypage插件的应用</title> <link href="/static/bootstrap/css/bootstrap.min.css" rel="stylesheet"> </head> <body> <div id="view"></div> <!-- 内容显示部分 --> <div id="page"></div> <!-- 分页码显示部分 --> <script src="/static/js/jquery.min.js?v=2.1.4"></script> <script src="/static/bootstrap/js/bootstrap.min.js"></script> <script src="/static/laypage/laypage.js"></script> <script> //以下将以jquery.ajax为例,演示一个异步分页 function demo(curr){ $.getJSON("{:url('tools /laypage')}", { page: curr || 1 //向服务端传的参数,此处只是演示 }, function(res){ //此处仅仅是为了演示变化的内容 var demoContent = (new Date().getTime()/Math.random()/1000)|0; document.getElementById('view').innerHTML = res.content + demoContent; //显示分页 laypage({ cont: 'page', //容器。值支持id名、原生dom对象,jquery对象。【如该容器为】:<div id="page1"></div> pages: res.pages, //通过后台拿到的总页数 curr: curr || 1, //当前页 jump: function(obj, first){ //触发分页后的回调 if(!first){ //点击跳页触发函数自身,并传递当前页:obj.curr demo(obj.curr); } } }); }); }; //运行 demo(); </script> </body> </html> ~~~ 拿了官方最实用的例子作为讲解,此处的数据 我们用模拟的数据来展示,由案例可见,这里面的数据是向一个 id=view 的dom元素中渲染这些数据。 ~~~ //此处仅仅是为了演示变化的内容 var demoContent = (new Date().getTime()/Math.random()/1000)|0; document.getElementById('view').innerHTML = res.content + demoContent; ~~~ > 先以模拟的数据做展示,后面再讲解真实的数据该怎么处理。 接下来,跟着我一行一行的来理解这这段代码: 1. 首先,我们通过向 tools /laypage 发送一个 异步请求,并且传递当前的 page 页码为 1 ![](https://box.kancloud.cn/336e9e8e47d6cdcd72316fa55e88d967_674x165.jpg) 2. 得到正确的回调之后,处理接下来的逻辑。 ~~~ //显示分页 laypage({ cont: 'page', //容器。值支持id名、原生dom对象,jquery对象。【如该容器为】:<div id="page1"></div> pages: res.pages, //通过后台拿到的总页数 curr: curr || 1, //当前页 jump: function(obj, first){ //触发分页后的回调 if(!first){ //点击跳页触发函数自身,并传递当前页:obj.curr demo(obj.curr); } } }); ~~~ 显示分页,通过的是 laypage 方法。 **count**: 此处填写你要将页面渲染到哪里的容器。例如,本例子是将其 渲染到 id=page 的div。因此本处填写 page **pages**: 填写获取的总页数,因此我们的接口 tools /laypage 应该返回 总页数 信息。 **curr**: 点击的当前页码。没特殊情况不需要做什么修改 只要按照 curr || 1, 填写即可。记住此处的 curr 变量根据 你的方法传入值而改变。demo(curr) ,此处我们 demo 传入的是 curr 表示当前页码。 **jump**: 点击页码执行的操作,此处可见,点击页码之后,我们再次调用 demo 即自身,并传入当前点击的页码。类似于递归的处理办法。 好了,修改一下,我们接口部分,让他在页面中跑起来吧。 ~~~ // laypage 分页插件演示 public function layPage() { if(request()->isAjax()){ // 模拟八页数据 return json(['code' => 1, 'pages' => 8, 'content' => '模拟数据']); } return $this->fetch(); } ~~~ 我们访问[http://www.phper.com/index/tools/laypage](http://www.phper.com/index/tools/laypage),就可以得到如下的效果: ![](https://box.kancloud.cn/2efc034a9c2f66aac99c283fdd25d2f4_359x123.jpg) > 至于页码的样式,显示多少个页码,是否显示首页 尾页等问题,可以直接参照官网进行配置。非常的简单。 例如想改变页码的样式,只需要在 laypage 这个js 方法的回调中加入一个 skin 的配置项即可。 ~~~ skin: 'yahei', //加载内置皮肤,也可以直接赋值16进制颜色值,如:#c00 ~~~ 此时当我们点击各个页码的时候,都会触发一个 异步请求,并发送当前的页码到后台。这个是不是跟我们同步请求类似啊: ![](https://box.kancloud.cn/c4c8037c726fd5aa8b8ae3c3a2af86e2_415x773.jpg)