介绍一下,已经有很多的vue分页的组件了,大家都是大同小易,那么我就结合自身的使用,写出了一片文章

  • 首先在新建一个分页模块

  1. 在模块中引入相应的代码,(内有详细的注释)
  2. template中

     <div class="page-bar"><ul><li class="first"><span>共{{dataNum}}条记录 第 {{cur}} / {{all}} 页</span></li><li v-if="cur>1"><a v-on:click="cur--,pageClick()"><</a>//点击上一页</li><li v-if="cur==1"><a class="banclick"><</a>//点击第一页时显示</li><li  class="li_a" v-for="index in indexs" v-bind:class="{ 'active': cur == index}"><a v-on:click="btnClick(index)">{{ index }}</a>//页码</li><li  v-if="cur!=all"><a v-on:click="cur++,pageClick()">></a>//点击下一页</li><li  v-if="cur == all"><a class="banclick">></a> //点击最后一页时显示</li><li class="last_li"><span>共<i>{{all}}</i>页</span> // 共有多少页</li></ul>
    </div>
  3. style中的内容

     .page-bar {text-align: center;width: 100%;height: 36px;margin: 0 auto;position: relative;}.page-bar ul {min-width: 700px;display: block;overflow: hidden;position: absolute;top: 50%;left: 50%;transform: translate(-50%,-50%);}.page-bar li {display: block;width: 36px;height: 36px;border-radius: 4px;list-style: none;overflow: hidden;position: relative;float: left;margin-left: 8px;
    }
    .page-bar .first{display: block;width: 170px;height: 36px;font-size: 14px;line-height: 36px;text-align: center;
    }
    .page-bar .last_li{width: 85px;height: 36px;border: 1px solid #ddd;
    }
    .page-bar .last_li span{width: 100%;height: 100%;line-height: 36px;text-align: center;float: left;
    }
    .page-bar li:first-child {margin-left: 0px
    }.page-bar a {width: 34px;height: 34px;border: 1px solid #ddd;text-decoration: none;position: absolute;top: 50%;left: 50%;transform: translate(-50%,-50%);/*margin-left: -1px;*/line-height:  34px;color: #333;cursor: pointer
    }.page-bar .li_a a:hover {background-color: #eee;border: 1px solid #40A9FF;color: #40A9FF;
    }.page-bar a.banclick {cursor: not-allowed;
    }.page-bar .active a {color: #fff;cursor: default;background-color: #1890FF;border-color: #1890FF;
    }.page-bar i {font-style: normal;color: #d44950;margin: 0px 4px;font-size: 14px;
    }
    
  4. script

    export default {//显示的声明组件name: "paging",//从父级组件中传值过来的,你可以自己设置名字,但是需要跟父级传入的名字一致!props : ["dataAll","dataCur","datanum","dataDatanum"],data() {return {all: this.dataAll, //总页数cur:  this.dataCur ,//当前页码num: this.datanum , //一页显示的数量  奇数dataNum: this.dataDatanum,//数据的数量}},watch: {cur: function(oldValue, newValue) {//父组件通过change方法来接受当前的页码this.$emit('change', oldValue)//这里是直接点击执行函数}},methods: {btnClick: function(data) { //页码点击事件if(data != this.cur) {this.cur = data}},pageClick: function() {console.log('现在在' + this.cur + '页');//父组件通过change方法来接受当前的页码//这里是点击下一页执行函数this.$emit('change',  this.cur)}},computed: {indexs: function() {var left = 1;var right = this.all;var ar = [];if(this.all >= this.num ) {if(this.cur > 3 && this.cur < this.all - 2) {left = this.cur -  (this.num-1)/2right = this.cur +  (this.num-1)/2} else {if(this.cur <= 3) {left = 1right =  this.num} else {right = this.allleft = this.all - (this.num - 1);}}}while(left <= right) {ar.push(left)left++}return ar}}}
    
  5. 父级的组件内容

    <template>
    //这是我自己设置的,可以根据情况不用设置不同的样式<div class="page">//这里时通过props传值到子级,并有一个回调change的函数,来获取自己传值到父级的值<paging :dataAll="all" :dataCur="cur" :datanum="num" :dataDatanum="dataNum" @change="pageChange"></paging></div>
    </template>
    <style scoped>.page {width: 100%;min-width: 1068px;height: 36px;margin: 40px auto;}
    </style>
    <script>
    import Paging from './paging'
    export default {name: "homepage",components: {Paging},data() {return {all: 40, //总页数cur: 1, //当前页码num: 7, //一页显示的数量  必须是奇数dataNum: 400, //数据的数量}},methods: {//子级传值到父级上来的动态拿去pageChange: function(page) {this.cur = page}}
    }
    </script>
  6. 最后重新保存,重新运行

       npm run dev

  1. 注意
    1.可以根据自己喜好来自己动手做一个分页,我在其它人的基础之上添加了页码以及当前页面数,也可以添加跳转的页数(暂时没有做),也可以更改css样式来改变!
    2.本人才疏学浅,请大家多多包涵!

vue中的自定义分页插件组件相关推荐

  1. 「后端小伙伴来学前端了」关于Vue中的自定义事件,组件绑定自定义事件实现通信

    傍晚的月亮 前言 原本这篇打算写Vue中的那个全局事件总线的原理,但是发现自己少写了这个自定义事件,不讲明白这个自定义事件的操作,不好写全局事件原理,于是就有了这篇文章拉. 一.v-on指令 要讲自定 ...

  2. Vue中父子及非父子组件之间的通信方法

    Vue中父子及非父子组件之间的通信方法 父子组件之间的通信方法 父级->子级通信 (依赖单向数据绑定+props实现) Vue.component('Father', { //注册了含有data ...

  3. Vue学习笔记:Vue中封装自定义步骤条 实现上下一步

    Vue中封装自定义步骤条 实现上下一步 效果图: 如上图:在VUE中实现效果,VUE+Element,ant都有封装好的UI,直接引用就好了: 这里,觉得样式不符合UI设计,所以自定义封装了一个步骤条 ...

  4. vue中通过monment.js插件来将时间戳转换为常用的时间格式

    vue中通过monment.js插件来将时间戳转换为常用的时间格式 在项目中很多时候需要展示时间信息,我们一般都是用时间戳来传输时间信息,但是我们在页面展示的话是我们想要的常见格式,比如:2021-4 ...

  5. php蛋糕文字生成二维码,蛋糕PHP中的自定义分页

    我是cakePHP的初学者,我不想在cakePHP中创建自定义分页. 函数$paginator-> numbers();它显示如下页码: 1 | 2 | 3 | 4 | ... 通过查看选项,有 ...

  6. 在vue中使用海康插件实现视频实时监控(海康插件)

    在vue中使用海康插件实现视频实时监控(海康插件) 首先 下载并安装海康插件 webcontrol.exe 然后 直接就写代码把,所有方法都是海康他们直接封装好的demo 初始化之后,后台把密钥和一些 ...

  7. Mybatis实现自定义分页插件

    mybatis自定义分页插件,步骤如下[文章末尾关注公众号获取完整代码]: (1)环境搭建 创建一个maven工程,然后引入mybatis依赖和mysql依赖即可. <dependency> ...

  8. 前端学习(2487):在VUE中使用element-ui的el-select组件时出现该报错

    一. 报错场景 在VUE中使用element-ui的el-select组件时出现该报错 [Vue warn]: Missing required prop: "value" 1 二 ...

  9. Jquery自定义分页插件

    效果: 核心代码: 自定义Jquery插件grid.js //Jquery自定义分页插件 (function($) {$.fn.grid= function(options) {var objGrid ...

最新文章

  1. ThinkPHP3.2URL重写隐藏应用的入口文件index.php
  2. JS 函数 函数递归
  3. python源码文件_从源代码生成Python文件
  4. Java14来了!Switch竟如此简单?Lombok也不需要了?来用Idea搭建Java14吧!
  5. 9.MongoDB之explain(执行计划分析)
  6. 团队作业4——第一次项目冲刺(Alpha版本)2nd day
  7. 如何用 Tensorflow 搭建神经网络-了解神经网络基本概念
  8. Python数据结构与算法(3.3)——队列
  9. 学习记录:python糗百爬虫
  10. arcgis 经纬度转大地坐标_深入理解ArcGIS的地理坐标系、大地坐标系
  11. SLIC 超像素分割(C++)
  12. 论文的总结与展望写作技巧
  13. Hadoop加速器GridGain
  14. verilog 7段数码管译码器
  15. 并行网络测试软件,并行程序测试
  16. 计算机小知识——键盘三颗灯含义
  17. tomcat实现https双向认证配置
  18. NFT 的洗盘交易,真的赚钱吗?
  19. 如何彻底的卸载和删除Windows service
  20. 中国大城市政治地位综合实力排名

热门文章

  1. MySQL数据库中的删除命令:delete、truncate、drop
  2. Eclipse引用的jar有对应的工程,「Maven依存关系」中显示对应的工程
  3. 解决web网站被挂马清除方法
  4. 小解系列-解决WebUploader在谷歌浏览器下弹出框打开慢,在Bootstrap模态框内部多次点击才能触发的问题
  5. SVN仓库迁移到Git遇到的两个问题和解决办法
  6. EasyUI+MVC+EF简单用户管理Demo(问题及解决)
  7. web项目中js加载慢问题解决思路
  8. Spring MVC异常处理详解
  9. ORA-01078和LRM-00109问题导致ORACLE启动失败解决方法
  10. Git钩子脚本可以和存储库一起管理吗?