使用Layui和Vue實現分頁


原理就是利用Layui的分頁組件和Vue組件的模板渲染功能。

我下面直接貼代碼,比較直觀。

index.html

<!DOCTYPE html>
<html>
<head>
    <link rel="stylesheet" href="/international/Content/plugins/layui-v2.2.45/css/layui.css" media="all" />
</head>
<body>

<!--列表-->
<div id="vueContainer">
    <table class="layui-table" lay-filter="test">
        <thead>
            <tr>
                <th width="10%">ID</th>
                <th width="50%">語言名稱</th>
                <th width="40%">語言備注</th>
            </tr>
        </thead>
        <tbody>
            <tr v-for="item in translateLanguages">
                <td>{{item.Id}}</td>
                <td>{{item.LangName}}</td>
                <td>{{item.LangComment}}</td>
            </tr>
        </tbody>
    </table>
</div>

<!--分頁容器-->
<div id="pagination"></div>

<script src="/international/Content/js/jquery-2.1.1.min.js"></script>
<script src="/international/Content/plugins/layui-v2.2.45/layui.js"></script>
<script src="/international/Content/js/vue.js"></script>
<script src="/international/Content/js/translate/translateLanguage/list.js"></script>
</body>
</html>

list.js

//使用Vue渲染模板,初始化時是沒有數據的,需要ajax請求拿到數據
var vue = new Vue({
    el: "#vueContainer",
    data: {
        translateLanguages: null
    }
});

//使用layui分頁
layui.use('laypage', function () {
    var laypage = layui.laypage;
    laypage.render({
        elem: 'pagination'
        , count: totalCount
        , layout: ['count', 'prev', 'page', 'next', 'limit', 'refresh', 'skip']
        , jump: function (obj, first) {
            //點擊非第一頁頁碼時的處理邏輯。比如這里調用了ajax方法,異步獲取分頁數據
            if (!first) {
                pagination(obj.curr, obj.limit);//第二個參數不能用變量pageSize,因為當切換每頁大小的時候會出問題
            }
        }
    });
});

var pageIndex = 1;
var pageSize = 10;
var totalCount = 0;
pagination(pageIndex, pageSize);
function pagination(pageIndex, pageSize) {
    //查詢條件
    var param = {
        pageIndex: pageIndex,
        pageSize: pageSize,
        //其它查詢條件可在下面添加
    };
    $.ajax({
        type: 'POST',
        url: '/international/translatelanguage/getlist',
        dataType: 'json',
        data: param,
        async: false,//這里設置為同步執行,目的是等數據加載完再調用layui分頁組件,不然分頁組件拿不到totalCount的值
        success: function (data) {
            vue.translateLanguages = data.data;
            totalCount = data.count;
        }
    });
};


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM