1. 程式人生 > >拿來主義:layPage分頁插件的使用

拿來主義:layPage分頁插件的使用

thead width body striped bsp borde 解壓 num color

  布衣之談

  所謂插件,大概就是項目中可插可拔的比較小功能化的組件;這些功能組件若能力可及,自己也可以完成——也即自己造輪子,但翻看各種技術社區,相關領域的神人們往往會有更好的實現方案貢獻出來,這個時候你只需要滿懷崇敬之心、感激之情,在遵循別人的使用約定的前提下拿過來應用在自己的項目中即可,省卻了很多自造車輪的成本。就像蘋果造機,雖名蘋果,但其零部件全都是世界各地各個功能廠商共同貢獻的結果。編程亦是此理,博主入編程的坑稍晚,但也越發的感覺到,在各種功能組件以及技術框架越來越普遍且適用的今天,正是依靠技術互助共享的精神力量,編程才變得越來越簡單、快捷的。瞎嗶嗶了這麽多,博主只想說,我雖沒有造輪子的能力,但力所能及的,就是盡量將自己的技術積累以博客的形式記錄、分享,自己成長為大菜鳥的同時,也期望能幫到更多的小菜鳥——造車輪子咱不會,但告訴別人如何使用,也算是功德一件。

  layPage分頁插件使用

  分頁是項目中比價常見的功能,所以網上分頁插件也很多,功能都大同小異,也都很好用,只是頁面風格不同而已,在實際項目中根據自己項目的界面風格選擇合適的一款就好。本篇主要介紹前端框架Layui中眾多功能組件之一的分頁組件——layPage的使用。廢話已多說完畢,直接進入正題。頁面插件的使用離不開js和css的支持,所以先去官網下載壓縮包,解壓獲取其中的js和css導入自己的前端頁面。博主測試的頁面因為同時引用了bootstrap的樣式,和layui的樣式有些沖突,會對插件的渲染效果有些微的影響。我們在使用第三方插件時,肯定先要根據官方文檔結合demo去學習,這些樣例包含有各種樣式可供選擇,總有一款適合你——

技術分享圖片

  結合官方的示例代碼,我們就可以根據自己的界面效果來應用插件了。先上簡單的前端頁面——

 1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
 2 <html>
 3 <head>
 4 <title></title> 
 5 <link rel="stylesheet" type="text/css" href="${BASE_PATH}/Plugins/layui/css/layui.css">
 6 <link rel="stylesheet"
href="${BASE_PATH}/Plugins/bootstrap/css/bootstrap.min.css" type="text/css"></link> 7 <script type="text/javascript" src="${BASE_PATH}/Plugins/jquery/jquery-1.12.4.min.js"></script> 8 <script type="text/javascript" src="${BASE_PATH}/Plugins/layui/js/layui.all.js"></script> 9 <script type="text/javascript" src="${BASE_PATH}/Themes/Default/js/test.js"></script> 10 <style type="text/css"> 11 .table th, .table td{ 12 text-align : center; 13 vertical-align : middle!improtant; 14 } 15 .container { 16 width : 60%; 17 } 18 </style> 19 </head> 20 <body> 21 <div class="container content"> 22 <div class="row"> 23 <div> 24 <div class="panel panel-green margin-bottom-40"> 25 <div class="panel-heading"> 26 <h1 class="panel-title">layPage測試</h1> 27 </div> 28 <div class="panel-body"> 29 <div> 30 <div> 31 <table class="table table-bordered table-striped"> 32 <thead> 33 <tr> 34 <th>序號</th> 35 <th>姓名</th> 36 <th>年齡</th> 37 <th>操作</th> 38 </tr> 39 </thead> 40 <!-- 表格數據加載 --> 41 <tbody id="tab_list"> 42 </tbody> 43 </table> 44 </div> 45 </div> 46 </div> 47 </div> 48 </div> 49 </div> 50 <!-- 存放分頁的容器 --> 51 <div id="layui"></div> 52 </div> 53 </body> 54 </html>

  上面的前端頁面很簡單,根據官方文檔,我們需在合適的位置提供一個存放分頁控件的 div 容器。然後是 js 頁面——

 1 $(function () {
 2     initLayPage();
 3 });
 4 
 5 /**
 6  * 初始化layui分頁
 7  */
 8 
 9 function initLayPage(pageConf) {
10     if(!pageConf){
11         pageConf ={};
12         pageConf.pageSize = 10;
13         pageConf.currentPage = 1;
14         
15     }
16     $.post("/test/query", pageConf, function (data) {
17         layui.use([‘laypage‘, ‘layer‘], function () {
18             var page = layui.laypage;  
19             page.render({
20                 elem: ‘layui‘, 
21                 count: data.total,
22                 curr: pageConf.currentPage,
23                 limit: pageConf.pageSize,
24                 first:"首頁",
25                 last:"尾頁",
26                 layout: [‘count‘, ‘prev‘, ‘page‘, ‘next‘, ‘limit‘, ‘skip‘],
27                 jump: function (obj, first) {
28                     if (!first) {
29                         pageConf.currentPage = obj.curr;
30                         pageConf.pageSize = obj.limit;
31                         initLayPage(pageConf);
32                     }
33                 }
34             });
35             fillTable(data.list,(pageConf.currentPage - 1) * pageConf.pageSize); //頁面填充
36         })
37     });
38 }
39 //填充表格數據
40 function fillTable(data,num) {
41     var info = ‘‘;
42     $.each(data, function (index, obj) {
43         // id 很多時候並不是連續的,如果為了顯示比較連續的記錄數,可以這樣根據當前頁和每頁條數動態的計算記錄序號
44         index = index +num+1;
45         info += ‘<tr><td>‘ + index + ‘</td><td>‘ + obj.name + ‘</td><td>‘ + obj.age + ‘</td>‘ +
46             ‘<td style="text-align: center;"><button name="btnModify" type="button" class="btn btn-success btn-xs" >修改</button>‘ +
47             ‘<button name="btnDelete" type="button" class="btn btn-danger btn-xs" onclick="remove(‘ + obj.id + ‘)">刪除</button></td></tr>‘;
48     });
49     $("#tab_list").html(info);
50 }

  對於上面的 js,咋一看有點懵,但我們看一下官方給出的基礎參數選項就比較好理解了——

技術分享圖片

  上面js 中要重點利用的就是切換分頁的回調函數 jump ,該函數在分頁或者每頁顯示條數發生改變時觸發,函數返回兩個參數:obj(當前分頁的所有選項值)、first(是否首次,一般用於初始加載的判斷)。當分頁發生改變時,可以根據obj獲取到改變後的當前頁或者每頁顯示條數,帶著這些參數便可以繼續發送ajax請求後臺獲取數據。對於一些溢出情況,layPage已經做了很好的封裝,比如,每頁顯示20條時當前正在最後一頁(5),當切換到每頁40條的時候,總共只有3頁了,那麽layPage會自動計算並切換到當前的最後一頁第3頁,無需我們自己再去判斷處理。下面就是博主做好的分頁效果—技術分享圖片

  一切,就是這麽簡單,就像初戀般的感覺。。。

拿來主義:layPage分頁插件的使用