LayUI的基本使用 - 分頁

LayUI 分頁處理

數據展現是以表格的形式展現的。使用模塊以下:
首先使用內置模塊-數據表格
而後使用內置模塊-分頁
官方文檔地址:https://www.layui.com/doc/
官方示例地址:https://www.layui.com/demo/php

注意問題:
一、接口返回的數據格式
二、請求方式的改變
三、請求參數名稱的改變
四、如何改變首頁的數據量、以及每頁顯示條數
五、最終的分頁代碼css

具體步驟以下:

一、從 官方文檔 - 內置模塊 - 數據表格 中複製以下:

二、複製到頁面、將CSS地址以及JS地址改成本身本地的地址

三、瀏覽器運行、會出現以下

四、發現提示數據接口請求異常:error。

解決:
1.1將代碼中的url請求地址修改成本身的地址
1.2將cols參數修改爲本身接口地址返回的參數

五、而後到瀏覽器繼續範圍、依舊報錯、錯誤以下:

六、針對問題去看、是接口返回的數據格式不正確的

而後咱們去手冊看接口數據返回格式。
具體:官方文檔 - 內置模塊 - 數據表格 – 返回的數據

七、具體返回的數據格式以下、其中、成功的時候返回的code應該爲0

{
    "code": 0,
    "msg": "",
    "count": 1000,
    "data": [ {},{},{} ]
}

八、改完本身的接口返回格式後、再次去瀏覽器訪問、會出現以下效果就表示接口格式以及返回的數據是正確的

九、在這塊、看到的結果中、出現分頁的效果、那代碼是那塊影響的呢?會發如今js代碼中有一段代碼:page:true // 開啓分頁。可是依舊存在問題、展現的分頁數據不正確。解決:將以下代碼複製出來、寫在本身代碼中、將接口返回的數據賦值給對應的參數。具體操做以下:

操做:示例 – 組件示例 – 數據表格 – 解析任意數據格式 – 查看代碼 - parseData

十、而後再次運行、會發現咱們本身寫的限制條數並無起做用、而後再次看請求地址、會發現是經過get請求、固定參數 page、limit來操做的、同時給了默認的值;

page:1,
limit:10,

十一、那如何改成post請求呢?只須要指定請求方式post

操做:官方文檔 - 內置模塊 - 數據表格 – 異步數據接口 – method

十二、運行、查看請求、以下:

1三、請求參數的名稱名稱已經知道是page、limit 如何修改成咱們本身想要的參數名呢?

操做:官方文檔 - 內置模塊 - 數據表格 – 異步數據接口 – request
代碼:
request: {
    pageName: 'page',   // 頁碼的參數名稱,默認:page
    limitName: 'size'   // 每頁數據量的參數名,默認:limit
}

1四、運行、查看請求參數、具體以下:

1五、改變默認的每頁顯示條數

如何將首頁默認顯示條數改成本身想要的?
如何將瀏覽器默認顯示的每頁顯示的條數改成本身想要的?
操做:官方文檔 – 內置模塊 – 數據表格 – 基礎參數一覽表 – limit、limits
代碼修改:
limit:3,
limits:[2,3,5],

1六、運行、查看請求參數、具體以下:

1七、最終的html代碼以下:

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title>table模塊快速使用</title>
    <link rel="stylesheet" href="./layui/css/layui.css" media="all">
</head>

<body>
    <table id="demo" lay-filter="test"></table>
    <script src="./layui/layui.js"></script>
    <script>
        layui.use('table', function () {
            var table = layui.table;
            //第一個實例
            table.render({
                elem: '#demo'
                , url: 'http://localhost/php/public/index.php/index/index/index' //數據接口
                , method: 'post'
                , page: true //開啓分頁
                , limit: 3
                , limits: [2, 3, 5]
                , cols: [[
                    { width: 80, type: 'checkbox' },
                    { field: 'type_id', width: 80, title: 'ID', sort: true },
                    { field: 'type_name', title: '分類名稱', sort: true }
                ]],
                parseData: function (res) { //將原始數據解析成 table 組件所規定的數據
                    return {
                        "code": res.code, //解析接口狀態
                        "msg": res.msg, //解析提示文本
                        "count": res.data.total, //解析數據長度
                        "data": res.data.data //解析數據列表
                    };
                },
                request: {
                    pageName: 'page' // 頁碼的參數名稱,默認:page
                    , limitName: 'size' //每頁數據量的參數名,默認:limit
                },
            });
        });
    </script>
</body>

</html>

1八、接口使用的TP5.0 沒有使用模型層、具體簡單代碼以下:

<?php

namespace app\index\controller;

use think\Controller;
use think\Db;
use think\Request;

class Index extends Controller
{
    public function index()
    {
        $size = Request::instance()->post( 'size', 3 );
        $page = Request::instance()->post( 'page', 1 );
        $res = Db::table( 'goods_type' )->paginate( $size, false, [ 'page'=> $page] );
        $arr['code'] = 0;
        $arr['msg'] = 'ok';
        $arr['data'] = $res;
        return json( $arr );
    }
}
?>
相關文章
相關標籤/搜索