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 相关文章推荐
jquery中实现标签切换效果的代码
Mar 01 Javascript
js通过地址栏给action传值(中文乱码全是问号)
May 02 Javascript
JS检测输入字符是否包含非法字符的示例代码
Feb 11 Javascript
Jquery EasyUI中弹出确认对话框以及加载效果示例代码
Feb 13 Javascript
加载列表时jquery获取ul中第一个li的属性
Nov 02 Javascript
浅谈bootstrap使用中的一些问题以及解决过程
Oct 18 Javascript
使用ionic切换页面卡顿的解决方法
Dec 16 Javascript
Three.js利用顶点绘制立方体的方法详解
Sep 27 Javascript
js实现数组和对象的深浅拷贝
Sep 30 Javascript
JS无限级导航菜单实现方法
Jan 05 Javascript
在mpvue框架中使用Vant WeappUI组件库的注意事项【推进】
Jun 09 Javascript
JS实现简易留言板增删功能
Feb 08 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实现的四则运算表达式计算实现代码
2011/08/02 PHP
PHP sprintf() 函数的应用(定义和用法)
2012/06/29 PHP
基于PHP 面向对象之成员方法详解
2013/05/04 PHP
PHP中exec函数和shell_exec函数的区别
2014/08/20 PHP
WordPress中用于创建以及获取侧边栏的PHP函数讲解
2015/12/29 PHP
利用php_imagick实现复古效果的方法
2016/10/18 PHP
php使用函数pathinfo()、parse_url()和basename()解析URL
2016/11/25 PHP
PHP 实现公历日期与农历日期的互转换
2017/09/13 PHP
jquery win 7透明弹出层效果的简单代码
2013/08/06 Javascript
js 获取元素下面所有li的两种方法
2014/04/14 Javascript
JavaScript中连接操作Oracle数据库实例
2015/04/02 Javascript
jQuery Ajax中的事件详细介绍
2015/04/16 Javascript
省市区三级联动下拉框菜单javascript版
2015/08/11 Javascript
JavaScript实现标题栏文字轮播效果代码
2015/10/24 Javascript
JS和jQuery使用submit方法无法提交表单的原因分析及解决办法
2016/05/17 Javascript
JavaScript必知必会(十) call apply bind的用法说明
2016/06/08 Javascript
老生常谈 关于JavaScript的类的继承
2016/06/24 Javascript
jQuery控制控件文本的长度的操作方法
2016/12/05 Javascript
详解jquery easyui之datagrid使用参考
2016/12/05 Javascript
JavaScript编写九九乘法表(两种任选)
2017/02/04 Javascript
[01:13:08]2018DOTA2亚洲邀请赛4.6 淘汰赛 mineski vs LGD 第二场
2018/04/10 DOTA
python list转dict示例分享
2014/01/28 Python
python中实现php的var_dump函数功能
2015/01/21 Python
Python实现多线程的两种方式分析
2018/08/29 Python
pycharm创建一个python包方法图解
2019/04/10 Python
Python判断远程服务器上Excel文件是否被人打开的方法
2020/07/13 Python
多重CSS背景动画实现方法示例
2014/04/04 HTML / CSS
澳大利亚汽车零部件、音响及配件超市:Automotive Superstore
2018/06/19 全球购物
英国户外服装、鞋类和设备的领先零售商:Millets
2020/10/12 全球购物
MIS软件工程师的面试题
2016/04/22 面试题
医院实习接收函
2014/01/12 职场文书
商场消防演习方案
2014/02/12 职场文书
汽车技术服务与贸易专业求职信
2014/07/20 职场文书
整改落实自查报告
2014/11/05 职场文书
golang通过递归遍历生成树状结构的操作
2021/04/28 Golang
react如何快速设置文件路径别名
2021/04/28 Javascript