vue在后端接口中无分页后端接口时,实现简单的分页功能

vue在后端接口中无分页后端接口时,实现简单的分页功能

这里我默认大家前面已经请求到后台的所有数据,接下来对后台数据做分页处理
使用element-ui组件的分页按钮(这里因人而异,可以用这个框架,也可以不用)

html部分:

<div class="block">
            <el-pagination
              @size-change="handleSizeChange"
              @current-change="handleCurrentChange"
              :current-page.sync="currentPage1"
              :page-size="pageSize"
              layout="total, prev, pager, next"
              :total="total">
            </el-pagination>
</div>

js部分:
在methods里面编写:

handleSizeChange(val) {
        console.log(`每页 ${val} 条`);
      },
handleCurrentChange(val) {
        //点击对应的页面数刷新当前显示的数据
        this.currentPage1 = val;
        //前面封装findAllemployees()函数默认通过axios请求后台所有数据
        this.findAllemployees(); 
      }

设置变量:

data(){
    return{
      employees:[],     //请求得到的所有后台数据来源,相当于data
      currentPage1:1,  //默认显示第几页的数据
      pageSize:6,   //当前页面显示多少条数据
      total:0,      //一共多少条后台的数据
      dataShow:[],  //当前显示的数据
      pageNum:1,    //共有几页
      totalPage:[], //所有页面的数据
      }
}

对数据进行分页处理

computed:{       //在计算属性中添加方法
    employeeList(){     //定义一个employeeList()函数方法
       //避免this指向错误
      var self = this;

//第一步:计算页数
      //若无后台数据在这里简单的模拟一下后台的数据
      // for(let i = 0;i<self.total;i++){
      //   this.data.push({ name: "cjj" ,look:"very handsome"});
      // }
      
      // 根据后台数据的条数和每一页显示数据算出一共几页,得0时设为1;
      this.pageNum = Math.ceil(self.total / self.pageSize) || 1;
      // console.log(this.pageNum,'----');  //自己尝试着打印一下是否得到想要的结果

//第二步:根据页数对数据进行分组,并存进每一页中
      // 每一页都是一个数组 形如 [['第一页的数据'],['第二页的数据'],['第三页数据']]
      // 根据每页显示数量 将后台的数据分割到 每一页,假设pageSize为5, 则第一页是1-5条,即slice(0,5),第二页是6-10条,即slice(5,10)...
      for(let i = 0; i < this.pageNum;i++){
        this.totalPage[i] = this.employees.slice(self.pageSize * i,self.pageSize * (i + 1))
      }
      //  获取到数据后显示的第一页内容
      this.dataShow = this.totalPage[self.currentPage1 - 1];
      //  console.log(this.dataShow,'+++');
      //返回数据
      return this.dataShow;
    },

//第三步:设置默认显示页,上一页和下一页,只要切换当前页面的索引值就可以了
    // 设置下一页
     nextPage(){
       if(this.currentPage1 === this.pageNum - 1) return;
       this.dataShow = this.totalPage[++this.currentPage1];
     },
    //  设置上一页
     prePage(){
       if(this.currentPage1 === 0) return;
       this.dataShow = this.totalPage[--this.currentPage1];
     },
  },
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值