Layui框架的分页(laypage)和模板引擎(laytpl)的使用

需求:根据数据信息生成数据分页展示。

(注:商品的评论列表,分页使用laypage,评论内容区块显示用laytpl)

思路:首先显示时,先请求数据,获取需要显示数据的总条数。在请求数据成功后,首先进行模板引擎的渲染,然后进行分页的渲染,更新当前页和显示条数。
跳页显示时,在分页插件的跳页回调方法中再次调用请求数据方法,更新总条数,重新进行数据渲染。

laytpl的模板定义

<script id="commentDemo" type="text/html"> <!--定义模板 -->
{{#  layui.each(d, function(index, item){ }}
<div class="comment_block">
    <div class="member_block">
        <div class="member_head">
            <img class="member_head_img" src="{{item.avatarUrl}}">
        </div>
        <div class="member_name">{{item.nickname}}</div>
    </div>
    <div class="content_block">
        <div class="content_star star{{item.star}}"></div>
        <div class="content_text">{{item.content}}</div>
        <div class="content_img">
            {{#  layui.each(item.imgList, function(indexImg, itemImg){ }}
            <span class="img_list">
                <img class="img_deatils" src="{{itemImg.picUrl}}">
            </span>
            {{#  }); }}
        </div>
        <div class="content_img_big">
            <img class="img_big_deatils" src="">
        </div>
        <div class="content_tips">
            <div
            <script id="commentDemo" type="text/html"> <!--定义模板 -->
            {{#  layui.each(d, function(index, item){ }}
            <div class="comment_block">
                <div class="member_block">
                    <div class="member_head">
                        <img class="member_head_img" src="{{item.avatarUrl}}">
                    </div>
                    <div class="member_name">{{item.nickname}}</div>
                </div>
                <div class="content_block">
                    <div class="content_star star{{item.star}}"></div>
                    <div class="content_text">{{item.content}}</div>
                    <div class="content_img">
                        {{#  layui.each(item.imgList, function(indexImg, itemImg){ }}
                        <span class="img_list">
                            <img class="img_deatils" src="{{itemImg.picUrl}}">
                        </span>
                        {{#  }); }}
                    </div>
                    <div class="content_img_big">
                        <img class="img_big_deatils" src="">
                    </div>
                    <div class="content_tips">
                        <div class="content_spec">{{item.specification}}</div>
                        <div class="content_time">{{item.createTime}}</div>
                    </div>
                </div>
                <div class="clear"></div>
            </div>
            {{#  }); }}
            {{#  if(d.length === 0){ }}
                暂无无数据
            {{#  } }}
            </script>
            <div id="commentView"></div><!--显示视图 -->
            <div  id="comment_block_page"></div> <!--使用插件 --> class="content_spec">{{item.specification}}</div>
            <div class="content_time">{{item.createTime}}</div>
        </div>
    </div>
    <div class="clear"></div>
</div>
{{#  }); }}
{{#  if(d.length === 0){ }}
    暂无无数据
{{#  } }}
</script>
<div id="commentView"></div>  <!--显示视图 -->
<div  id="comment_block_page"></div> <!--使用插件 -->

模板引擎渲染代码

//模板引擎渲染
var renderComment = function(arrayData){
    var commentDemo = $('#commentDemo').html()
        ,commentView = document.getElementById('commentView');
    laytpl(commentDemo).render(arrayData.records, function(html){
        commentView.innerHTML = html;
    });
};

请求数据代码

//请求数据
var getGoodInfoDeatil = function(){
    $.ajax({
        url: 'searchCommentInfoById',
        method : 'post',
        dataType: 'json',
        async: false,
        data:{
            id : goodId,
            page : page,
            limit : limit
        },
        success: function (response) {
            if(response.success) {
                var arrayData = response.data;
                //确定总数
                total = arrayData.total;
                if(total == 0){
                    $('#comment_block_page').css({'display':'none'});
                }
                //进行渲染
                renderComment(arrayData);
            }else {
                layer.msg(response.msg,{icon:5,time:1000});
            }
        },
        error: function () {
            layer.msg('系统错误!', {
                icon: 5
            });
        }
    });
};

使用分页代码

//评论分页
var pageComment = function(){
    laypage.render({
        elem: 'comment_block_page' //注意,这里的 test1 是 ID,不用加 # 号
        ,count: total //数据总数,从服务端得到
        ,limits: [10, 25, 50, 100]
        ,first: '首页'
        ,last: '尾页'
        ,prev: '<em><<</em>'
        ,next: '<em>>></em>'
        // 自定义主题
        ,theme: "#FF5722"
        ,layout: ['count', 'prev', 'page', 'next', 'limit', 'skip']
        ,jump: function(obj, first){
            //获取当前分页
            page = obj.curr;
            limit = obj.limit;

            //首次不运行
            if(!first){
                getGoodInfoDeatil();
            }
        }
    });
};

调用顺序(使用的是tab面板,所以在面板切换时,调用方法,加载数据)

//切换至评论页面
element.on('tab(goodInfoDetail)', function(data){
    if(data.index == 3){
        //首次请求数据和分页
        getGoodInfoDeatil(); 
        pageComment();
    }
});

效果展示
在这里插入图片描述

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
layui 中,分页功能是通过 `laypage` 模块实现的,具体实现步骤如下: 1. 引入 layui 的 `laypage` 模块: ```html <link rel="stylesheet" href="https://cdn.staticfile.org/layui/2.5.6/css/layui.min.css"> <script src="https://cdn.staticfile.org/layui/2.5.6/layui.min.js"></script> ``` 2. 定义一个容器,用来显示分页控件: ```html <div id="page"></div> ``` 3. 初始化分页控件: ```javascript layui.use(['laypage'], function() { var laypage = layui.laypage; laypage.render({ elem: 'page', // 容器id count: 100, // 数据总数 limit: 10, // 每页显示的数据条数 curr: 1, // 当前页码 jump: function(obj, first) { // obj包含了当前分页的所有参数,比如:obj.curr表示当前页码,obj.limit表示每页显示的数据条数 // first为true表示首次加载分页控件,false表示非首次加载 // 在这里可以根据分页参数,发送请求获取对应的数据,然后将数据渲染到页面上 } }); }); ``` 其中,`laypage.render()` 方法的参数说明如下: - `elem`:容器id,即要显示分页控件的DOM元素的id; - `count`:数据总数,即需要分页的数据总条数; - `limit`:每页显示的数据条数; - `curr`:当前页码; - `jump`:回调函数,每次分页切换时都会执行该函数,用来获取对应的数据并渲染到页面上。 需要注意的是,在 `jump` 回调函数中,可以通过发送Ajax请求获取对应的数据,然后将数据渲染到页面上。同时,`laypage.render()` 方法会自动根据分页参数渲染出分页控件,无需手动处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值