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中ready事件用法实例
Jan 19 Javascript
iframe跨域通信封装详解
Aug 11 Javascript
原生js页面滚动延迟加载图片
Dec 20 Javascript
JS遍历数组及打印数组实例分析
Jan 21 Javascript
JavaScript判断页面加载完之后再执行预定函数的技巧
May 17 Javascript
javascript作用域、作用域链(菜鸟必看)
Jun 16 Javascript
jQuery实现简单的抽奖游戏
May 05 jQuery
基于vue-video-player自定义播放器的方法
Mar 21 Javascript
angular-tree-component的使用详解
Jul 30 Javascript
element-ui 实现响应式导航栏的示例代码
May 08 Javascript
VueX模块的具体使用(小白教程)
Jun 05 Javascript
vue el-upload上传文件的示例代码
Dec 21 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 iconv 解决utf-8和gb2312编码转换问题
2010/04/12 PHP
判断php数组是否为索引数组的实现方法
2013/06/13 PHP
完美解决php 导出excle的.csv格式的数据时乱码问题
2017/02/18 PHP
基于Jquery插件开发之图片放大镜效果(仿淘宝)
2011/11/19 Javascript
jquery实现的V字形显示效果代码
2015/10/27 Javascript
每天一篇javascript学习小结(Date对象)
2015/11/13 Javascript
微信小程序 购物车简单实例
2016/10/24 Javascript
JS中事件冒泡和事件捕获介绍
2016/12/13 Javascript
Javascript调试之console对象——你不知道的一些小技巧
2017/07/10 Javascript
vue + vuex todolist的实现示例代码
2018/03/09 Javascript
解决微信浏览器缓存站点入口文件(IIS部署Vue项目)
2019/06/17 Javascript
[02:51]DOTA2英雄基础教程 艾欧
2014/01/13 DOTA
[01:15:45]DOTA2上海特级锦标赛B组小组赛#1 Alliance VS Spirit第一局
2016/02/26 DOTA
[01:18]PWL开团时刻DAY4——圣剑与抢盾
2020/11/03 DOTA
Python多进程编程技术实例分析
2014/09/16 Python
Python实现拼接多张图片的方法
2014/12/01 Python
用Python编写生成树状结构的文件目录的脚本的教程
2015/05/04 Python
Python找出list中最常出现元素的方法
2016/06/14 Python
Python遍历pandas数据方法总结
2018/02/09 Python
Python实现迭代时使用索引的方法示例
2018/06/05 Python
浅述python中深浅拷贝原理
2018/09/18 Python
详解如何为eclipse安装合适版本的python插件pydev
2018/11/04 Python
NumPy中的维度Axis详解
2019/11/26 Python
python使用Thread的setDaemon启动后台线程教程
2020/04/25 Python
美国高级音响品牌:Master&Dynamic
2018/07/05 全球购物
PHP如何对用户密码进行加密
2014/07/31 面试题
运动会通讯稿100字
2014/01/31 职场文书
优秀志愿者事迹材料
2014/02/03 职场文书
金融事务专业求职信
2014/04/25 职场文书
材料专业大学毕业生自荐书
2014/07/02 职场文书
2014年精神文明工作总结
2014/12/23 职场文书
聘任证明怎么写
2015/03/02 职场文书
应聘教师求职信范文
2015/03/20 职场文书
2015年幼儿园后勤工作总结
2015/04/25 职场文书
三八节祝酒词
2015/08/11 职场文书
2016年安康杯竞赛活动总结
2016/04/05 职场文书