vue分页器组件编写方法详解


Posted in Javascript onJune 28, 2019

使用vue编写的分页器组件,支持输入页码跳转,效果如图:

1、点击前五页:

vue分页器组件编写方法详解

2、点击中间部分页面

vue分页器组件编写方法详解

3、点击第一页,上一页按钮失效,点击最后一页,下一页按钮失效

vue分页器组件编写方法详解

组件调用:

//html调用 参数:pageSize(总页数);pageNo(当前页)
<pager :pageSize="pageSize" v-model="pageNo" @on-jump="jump"></pager>

//组件引入
import pager from '../../component/pager/pager.vue'

//组件调用声明
components:{ pager}

//参数
data(){
 return {
  pageSize: 30,
  pageNo: 2
 }
}

//接收跳转事件
methods:{
 jump(id){
  console.log(id)
 },
}

组件编写

pager.vue:

<template>
 <div class="pager-wrapper" ref="pager">
  <div class="pager-box">
   <a class="pager-prev" :class="{'pager-disabled':prevDisable}" href="javascript:;" @click="jumpPrev()">上一页</a>
   <template v-for="i in pageSize">
    <span v-if="i==pageNo" class="pager-curr">
     <em class="pager-em"></em><em>{{i}}</em>
    </span>
    <a v-else-if="pageNo<5&&(i)<6" href="javascript:;" @click="jump(i)">
     {{i}}
    </a>
    <a v-else-if="pageSize<7||i==1||i==pageSize||(pageNo-2<=i&&i<=pageNo+2)" href="javascript:;" @click="jump(i)">
     {{i}}
    </a>
    <template v-else>
     <span v-if="pageNo<5&&i==6" class="pager-spr">…</span>
     <span v-if="pageNo==4&&i==7" class="pager-spr">…</span>
     <span v-if="pageNo>4&&i==pageNo-3" class="pager-spr">…</span>
     <span v-if="pageNo>4&&i==pageNo+3" class="pager-spr">…</span>
    </template>
   </template>
   <a class="pager-next" :class="{'pager-disabled':nextDisable}" href="javascript:;" @click="jumpNext()">下一页</a>
  </div>
  <div class="pager-input">
   <input type="text" v-model="jumpPage">
   <a class="pager-btn-go" href="javascript:;" @click="Go()">GO</a>
  </div>
 </div>
</template>
<script>
export default {
 model:{ //通过v-model传过来的参数
  prop: 'pageNo',
  event: 'jumpPage'
 },
 props:{
  pageSize:{
   type: Number,
   default: 1
  },
  pageNo:{ //通过v-model传过来的参数
   type: Number,
   default: 1
  }
 },
 data(){
  return {
   jumpPage:'' //避免操作props参数
  }
 },
 computed: {
  prevDisable: function(){ //“上一页”按钮是否可点
   if(this.pageNo > 1){
    return false;
   }else{
    return true
   }
  },
  nextDisable: function(){ //“下一页”按钮是否可点
   if(this.pageNo < this.pageSize && this.pageSize > 1){
    return false;
   }else{
    return true;
   }
  },
 },
 methods: {
  jumpPrev: function(){ //点击上一页
   if(this.pageNo == 1){
    return ;
   }else{
    this.$emit('jumpPage',this.pageNo-1);
    this.$emit('on-jump',this.pageNo-1);
   }
  },
  jumpNext: function(){ //点击下一页
   if(this.pageNo == this.pageSize){
    return ;
   }else{
    this.$emit('jumpPage',this.pageNo+1); //修改当前页码
    this.$emit('on-jump',this.pageNo+1); //跳转
   }
  },
  jump: function(id){ //直接跳转
   if(id>this.pageSize){ 
    id=this.pageSize;
   }
   this.jumpPage = '';
   this.$emit('jumpPage',id); //修改当前页码
   this.$emit('on-jump',id); //跳转
  },
  Go: function(){
   if(this.jumpPage==''){ //判空处理
    return ;
   }else if(/^\d*$/.test(parseInt(this.jumpPage))){ //填写数字才能跳转
    this.jump(parseInt(this.jumpPage));
    this.jumpPage = '';
   }else{
    this.jumpPage = '';
    return ;
   }
  }
 }
}
</script>

完整代码可下载:vue分页器组件

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
ie中js创建checkbox默认选中问题探讨
Oct 21 Javascript
纯js分页代码(简洁实用)
Nov 05 Javascript
jQuery - css() 方法示例详解
Jan 16 Javascript
用js代码和插件实现wordpress雪花飘落效果的四种方法
Dec 15 Javascript
JavaScript针对网页节点的增删改查用法实例
Feb 02 Javascript
Vuejs第十一篇组件之slot内容分发实例详解
Sep 09 Javascript
jQuery实现的简单在线计算器功能
May 11 jQuery
使用jquery+iframe做一个ajax上传效果(实例)
Aug 24 jQuery
js中innerText/textContent和innerHTML与target和currentTarget的区别
Jan 21 Javascript
JavaScript实现好看的跟随彩色气泡效果
Feb 06 Javascript
vue中使用mockjs配置和使用方式
Apr 06 Vue.js
vue3使用vuedraggable实现拖拽功能
Apr 06 Vue.js
Vue分页器实现原理详解
Jun 28 #Javascript
vue实现分页栏效果
Jun 28 #Javascript
js实现简单分页导航栏效果
Jun 28 #Javascript
elementUi vue el-radio 监听选中变化的实例代码
Jun 28 #Javascript
vue实现Excel文件的上传与下载功能的两种方式
Jun 28 #Javascript
开发中常用的25个JavaScript单行代码(小结)
Jun 28 #Javascript
微信小程序身份证验证方法实现详解
Jun 28 #Javascript
You might like
php foreach 使用&amp;(与运算符)引用赋值要注意的问题
2010/02/16 PHP
Yii使用技巧大汇总
2015/12/29 PHP
Yii2.0预定义的别名功能小结
2016/07/04 PHP
js验证表单大全
2006/11/25 Javascript
JQuery拖拽元素改变大小尺寸实现代码
2012/12/10 Javascript
JavaScript 常见安全漏洞和自动化检测技术
2015/08/21 Javascript
jQuery入门之层次选择器实例简析
2015/12/11 Javascript
郁闷!ionic中获取ng-model绑定的值为undefined如何解决
2016/08/27 Javascript
[js高手之路]图解javascript的原型(prototype)对象,原型链实例
2017/08/28 Javascript
webpack构建换肤功能的思路详解
2017/11/27 Javascript
jQuery+CSS实现的table表格行列转置功能示例
2018/01/08 jQuery
ng-events类似ionic中Events的angular全局事件
2018/09/05 Javascript
vue: WebStorm设置快速编译运行的方法
2018/10/18 Javascript
20个必会的JavaScript面试题(小结)
2019/07/02 Javascript
浅谈Vue.js之初始化el以及数据的绑定说明
2019/11/14 Javascript
卸载vue2.0并升级vue_cli3.0的实例讲解
2020/02/16 Javascript
使用python绘制人人网好友关系图示例
2014/04/01 Python
python字典排序实例详解
2015/05/20 Python
Python网站验证码识别
2016/01/25 Python
Python引用传值概念与用法实例小结
2017/10/07 Python
在pytorch中查看可训练参数的例子
2019/08/18 Python
python与js主要区别点总结
2020/09/13 Python
Selenium 配置启动项参数的方法
2020/12/04 Python
Dodax奥地利:音乐、电影、书籍、玩具、电子产品等
2019/08/31 全球购物
全球领先的在线cosplay服装商店:RoleCosplay
2020/01/18 全球购物
英国最大的在线亚洲杂货店:Red Rickshaw
2020/03/22 全球购物
科颜氏印度官网:Kiehl’s印度
2021/02/20 全球购物
个人收入证明范本
2014/01/12 职场文书
全国税务系统先进集体事迹材料
2014/05/19 职场文书
企业形象策划方案
2014/05/29 职场文书
2015年大学班级工作总结
2015/04/28 职场文书
如何写好竞聘报告
2019/04/03 职场文书
教您:房贷工资收入证明应该怎么写?
2019/08/19 职场文书
解决MultipartFile.transferTo(dest) 报FileNotFoundExcep的问题
2021/07/01 Java/Android
Win11 Build 21996.1 Dev版怎么样? win11系统截图欣赏
2021/11/21 数码科技
Golang 实现WebSockets
2022/04/24 Golang