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 相关文章推荐
[JS]点出统计器
Oct 11 Javascript
Extjs中ComboBoxTree实现的下拉框树效果(自写)
May 28 Javascript
解决js数据包含加号+通过ajax传到后台时出现连接错误
Aug 01 Javascript
jQuery设置聚焦并使光标位置在文字最后的实现方法
Aug 02 Javascript
总结javascript中的六种迭代器
Aug 16 Javascript
JQuery动态添加Select的Option元素实现方法
Aug 29 Javascript
Node.js开发教程之基于OnceIO框架实现文件上传和验证功能
Nov 30 Javascript
bootstrap基本配置_动力节点Java学院整理
Jul 14 Javascript
vue.js将时间戳转化为日期格式的实现代码
Jun 05 Javascript
Angularjs实现多图片上传预览功能
Jul 18 Javascript
JavaScript实现五子棋游戏的方法详解
Jul 08 Javascript
es6函数之严格模式用法实例分析
Mar 17 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小技巧搜集,每个PHPer都来露一手
2007/01/02 PHP
php环境配置 php5 MySQL5 apache2 phpmyadmin安装与配置图文教程
2007/03/16 PHP
如何使用PHP计算上一个月的今天
2013/05/23 PHP
Win下如何安装PHP的APC拓展
2013/08/07 PHP
php不用正则验证真假身份证
2013/11/06 PHP
php中使用sftp教程
2015/03/30 PHP
PHP用PDO如何封装简单易用的DB类详解
2017/07/30 PHP
BOOM vs RR BO5 第四场 2.14
2021/03/10 DOTA
javascript 二进制运算技巧解析
2012/11/27 Javascript
简介JavaScript中search()方法的使用
2015/06/06 Javascript
jQuery采用连缀写法实现的折叠菜单效果
2015/09/18 Javascript
javascript中闭包概念与用法深入理解
2016/12/15 Javascript
javascript设计模式之模块模式学习笔记
2017/02/15 Javascript
使用jQuery 操作table 完成单元格合并的实例
2017/12/27 jQuery
Node.js利用console输出日志文件的方法示例
2018/04/27 Javascript
发布Angular应用至生产环境的方法
2018/12/10 Javascript
详解element-ui中el-select的默认选择项问题
2019/08/02 Javascript
Python基础教程之tcp socket编程详解及简单实例
2017/02/23 Python
tensorflow获取变量维度信息
2018/03/10 Python
对pandas中两种数据类型Series和DataFrame的区别详解
2018/11/12 Python
Python逐行读取文件中内容的简单方法
2019/02/26 Python
Pandas中Series和DataFrame的索引实现
2019/06/27 Python
分享8点超级有用的Python编程建议(推荐)
2019/10/13 Python
pygame实现非图片按钮效果
2019/10/29 Python
PyTorch和Keras计算模型参数的例子
2020/01/02 Python
解决django的template中如果无法引用MEDIA_URL问题
2020/04/07 Python
Python Pivot table透视表使用方法解析
2020/09/11 Python
《蚕姑娘》教学反思
2014/04/15 职场文书
县级文明单位申报材料
2014/05/23 职场文书
2014最新房贷收入证明范本
2014/09/12 职场文书
投标文件签署授权委托书范本
2014/10/12 职场文书
地震慰问信
2015/02/14 职场文书
2015年人力资源工作总结
2015/04/08 职场文书
2015年学校德育工作总结
2015/04/22 职场文书
2015年网管个人工作总结
2015/05/22 职场文书
高二化学教学反思
2016/02/22 职场文书