当前位置: 首页 > news >正文

Vue中实现分页

1.构造分页组件,并注册为全局组件

<template><div class="pagination"><button v-if="startNumAndEndNum.start>1" @click="$emit('getPageNo',pageNo-1)">上一页</button><button v-if="startNumAndEndNum.start>1" @click="$emit('getPageNo',1)" :class="{active:pageNo==1}">1</button><button v-if="startNumAndEndNum.start>2">···</button><!-- 中间部分 --><template  v-for="(page,index) in startNumAndEndNum.end"><button:key="index" v-if="startNumAndEndNum.start<=page"@click="$emit('getPageNo',page)":class="{active:pageNo==page}"> {{page}}</button></template>  <button v-if="startNumAndEndNum.end<allPage-1">···</button><button v-if="startNumAndEndNum.end<allPage" @click="$emit('getPageNo',allPage)" :class="{active:pageNo==allPage}">{{allPage}}</button><button v-if="startNumAndEndNum.end!=allPage" @click="$emit('getPageNo',pageNo+1)">下一页</button><button style="margin-left: 30px">共 {{total}} 条</button></div></template><script>export default {name: "Page",props:['pageNo','pageSize','total','continues'],computed:{//计算总页数allPage(){//向上取整return Math.ceil(this.total / this.pageSize)},//计算 连续页码 起始数据和结束数据[连续页码至少是5]startNumAndEndNum(){//先定义两个变量存储开始与结束的数字let start=0,end=0;//如果数据不够5页(不正常现象)if(this.allPage<this.continues){start=1,end=this.allPage}else{start=this.pageNo - parseInt(this.continues/2),end=this.pageNo + parseInt(this.continues/2)//当当前页为1时 start为-1 if(start<1){start=1,end=this.continues}//纠正end if(end>this.allPage){end=this.allPage,start=end-this.continues + 1}}return {start,end}}}}</script><style lang="less" scoped>.pagination {text-align: center;button {margin: 0 5px;background-color: #f4f4f5;color: #606266;outline: none;border-radius: 2px;padding: 0 4px;vertical-align: top;display: inline-block;font-size: 13px;min-width: 35.5px;height: 28px;line-height: 28px;cursor: pointer;box-sizing: border-box;text-align: center;border: 0;&[disabled] {color: #c0c4cc;cursor: not-allowed;}&.active {cursor: not-allowed;background-color: #409eff;color: #fff;}}//   button:active {//     color: rgba(235, 217, 55, 0.935);//     border: 1px solid orange;// }.active{background-color: skyblue;}}</style>

2.使用分页组件

<template><div><!-- 分页组件 --><Page :pageNo="params.pageNo" :pageSize="params.pageSize" :total="total" :continues="5"ref="pg"></Page></div>
</template><script>
import {mapState} from "vuex";
export default {name: "Search",data() {return {params: {//分页器参数pageNo: 1,pageSize: 10,},};},mounted() {this.$refs.pg.$on('getPageNo',(pageNo)=>{this.params.pageNo=pageNothis.getSearch(this.params)})},computed: {//获取search模块展示的总数据条数...mapState({total:state=>state.search.searchList.total})},methods: {//向服务器发请求获取search模块数据,根据参数不同返回不同的数据//把这次请求封装成函数,需要时候调用即可getSearch(params) {this.$store.dispatch("SearchInfo", params);},
};
</script><style lang="less" scoped>
</style>

http://www.lryc.cn/news/130473.html

相关文章:

  • vue3 + antv/x6 实现拖拽侧边栏节点到画布
  • 视频云存储/安防监控/视频汇聚EasyCVR平台新增设备经纬度选取
  • CentOS7源码安装MySQL详细教程
  • SpringBoot + Vue 微人事(十二)
  • 上半年巴比食品增收不增利,下半年失速的团餐业务能否“复苏”?
  • Java基础篇--内部类
  • 完全备份、增量备份、差异备份、binlog日志
  • Flutter实现Service + UI 全面跨平台
  • 微软商店的ubuntu 连不上网Temporary failure in name resolution
  • “深入剖析JVM内部工作原理:解密Java虚拟机“
  • 数据结构与算法基础
  • 人工智能任务1-【NLP系列】句子嵌入的应用与多模型实现方式
  • 【Java并发编程面试题(60道)】
  • Python:逢七拍腿游戏
  • esp32C3 micropython oled 恐龙快跑游戏
  • 53.Linux day03 文件查看命令,vi/vim常用命令
  • YOLOv8改进后效果
  • 小程序的数据绑定和事件绑定
  • 第四章MyBatis核心配置文件
  • ⛳ Docker - Centos 安装配置
  • Python web实战之Django 的跨站点请求伪造(CSRF)保护详解
  • ARM(汇编指令)
  • 神经网络基础-神经网络补充概念-01-二分分类
  • Linux16(1) 线程同步
  • 深入探讨lowess算法:纯C++实现与局部加权多项式回归的数据平滑技术
  • Sui安全篇|详解零知识证明 (ZKP) Groth16的可塑性
  • 记录--webpack和vite原理
  • Windows系统中使用bat脚本启动git bash 并运行指定命令 - 懒人一键git更新
  • elementui form组件出现英文提示
  • 使用windows Api简单验证ISO9660文件格式,以及装载和卸载镜像文件