Javascript分页:模拟后台返回数据方法

本文档介绍如何在缺乏实际分页接口的情况下,通过编写getPageData()函数来模拟返回分页数据。示例代码展示了如何根据页码、每页记录数和总记录数生成带有变化信息的分页数据,适用于前端开发中的分页场景,如小程序商品列表分页实现。
摘要由CSDN通过智能技术生成

一、场景

  • 我们很多时候需要用到分页场景,但是实际的接口又没有那么多数据,此时,我们就需要写模拟分页数据。此文章就是写了一个方法 getPageData() 用来模拟返回后台的分页数据。

二、代码

<script>
    let page = 1; //默认第1页
    let pageSize = 15; //每页默认记录数15条
    let sizeTotal = 36; //总记录数

    let data = []; //最终的所有数据
    let pageTotal = Math.ceil(sizeTotal / pageSize); //计算总页数
    for (let i = 1; i <= pageTotal; i ++) {
        let pieceData = {id: 1, name: '名称', create_time: 'y-m-d'}; //每一条的数据
        let resultData = getPageData(pieceData, i, pageSize, 'name', sizeTotal);
        data = data.concat(resultData.data); //循环一页,追加数据到data
    }

    console.log(data); //打印 所有的数据

    /**
     * 模拟返回每一页的数据
     * @param pieceData 单条数据:object对象
     * @param page 当前页的数据
     * @param pageSize 每页记录数
     * @param nameField 需要修改的值的字段名(让我们能够区分数据变动了)
     * @param count 总记录数
     * @returns {{data: Array, count: number}} 模拟分页接口返回的结果数据
     */
    function getPageData(pieceData, page, pageSize, nameField, count) {
        let pageData = []; //定义当前页数据
        count = count ? count : 99; //默认99条数据

        let name = pieceData[nameField]; //获取名称值
        let startNumber = (page - 1) * pageSize; //计算起始值

        //如果是最后一页,则pageSize的值可能小于默认值
        if ((page * pageSize) > count) { //如果最后一页的记录大于总页数,则需要重置pageSize
            pageSize = count - startNumber;
        }

        //模拟出page条数据
        for (let i = 1; i <= pageSize; i ++) {
            //给nameField加上后缀,好让我们知道数据已经变动了
            pieceData[nameField] = name + (startNumber+i);

            // console.log(pieceData[nameField]);

            //对象是引用类型,传递的是引用地址,所以你两个数组引用的是同一个对象,只要其中一个数组改变,就会导致对象改变,进而另一个引用的数组也会改
            // pageData.push(pieceData); //此种方式追加:name值异常,得用JSON.parse(JSON.stringify(pieceData))
            pageData.push(JSON.parse(JSON.stringify(pieceData)));

            // console.log(pageData);
        }

        // console.log(JSON.stringify(pageData));

        return {count: count, data: pageData};
    }
</script>

三、打印截图

在这里插入图片描述

四、使用Demo

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值