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 相关文章推荐
也说JavaScript中String类的replace函数
Sep 22 Javascript
jQuery学习笔记(3)--用jquery(插件)实现多选项卡功能
Apr 08 Javascript
javascript通过navigator.userAgent识别各种浏览器
Oct 25 Javascript
jQuery 获取/设置/删除DOM元素的属性以a元素为例
May 23 Javascript
JS实现简单的顶部定时关闭层效果
Jun 15 Javascript
jQuery事件绑定on()、bind()与delegate() 方法详解
Jun 03 Javascript
一起学写js Calender日历控件
Apr 14 Javascript
jQuery插件Validation快速完成表单验证的方式
Jul 28 Javascript
JavaScript中offsetWidth的bug及解决方法
May 17 Javascript
利用vue组件自定义v-model实现一个Tab组件方法示例
Dec 06 Javascript
node中的session的具体使用
Sep 14 Javascript
Vue父组件如何获取子组件中的变量
Jul 24 Javascript
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 URL地址获取函数代码(端口等) 推荐
2010/05/15 PHP
PHP里8个鲜为人知的安全函数分析
2014/12/09 PHP
php each 返回数组中当前的键值对并将数组指针向前移动一步实例
2016/11/22 PHP
PHP面向对象学习之parent::关键字
2017/01/18 PHP
php7连接MySQL实现简易查询程序的方法
2020/10/13 PHP
基于json的jquery地区联动效果代码
2011/07/06 Javascript
javascript小组件 原生table排序表格脚本(兼容ie firefox opera chrome)
2012/07/25 Javascript
javascript陷阱 一不小心你就中招了(字符运算)
2013/11/10 Javascript
js正则表达式中exec用法实例
2015/07/23 Javascript
数据分析软件之FineReport教程:[5]参数界面JS(全)
2015/08/13 Javascript
vue的事件绑定与方法详解
2017/08/16 Javascript
使用 Node.js 开发资讯爬虫流程
2018/01/07 Javascript
node puppeteer(headless chrome)实现网站登录
2018/05/09 Javascript
js实现input密码框显示/隐藏功能
2020/09/10 Javascript
vue源码中的检测方法的实现
2019/09/26 Javascript
Vue快速实现通用表单验证的方法
2020/02/24 Javascript
vue-simple-uploader上传成功之后的response获取代码
2020/09/07 Javascript
Python装饰器decorator用法实例
2014/11/10 Python
解决Python 中英文混输格式对齐的问题
2018/07/16 Python
在Django的View中使用asyncio的方法
2019/07/12 Python
Python调用系统命令os.system()和os.popen()的实现
2020/12/31 Python
Python经典五人分鱼实例讲解
2021/01/04 Python
CSS实现聊天气泡效果
2020/04/26 HTML / CSS
HTML5 canvas基本绘图之绘制曲线
2016/06/27 HTML / CSS
params有什么用
2016/03/01 面试题
售后服务科岗位职责范文
2013/11/13 职场文书
中专毕业生自荐信
2013/11/16 职场文书
怎么写自荐书范文
2014/02/12 职场文书
《浅水洼里的小鱼》听课反思
2014/02/28 职场文书
销售职业生涯规划范文
2014/03/14 职场文书
一体化教学实施方案
2014/05/10 职场文书
政风行风评议整改方案
2014/09/15 职场文书
私用公车造成事故检讨书
2014/11/16 职场文书
2016中考冲刺决心书
2015/09/22 职场文书
Python字典和列表性能之间的比较
2021/06/07 Python
如何vue使用el-table遍历循环表头和表体数据
2022/04/26 Vue.js