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 拼图游戏 面向对象,注释完整。
Jun 18 Javascript
JavaScript DOM学习第四章 getElementByTagNames
Feb 19 Javascript
html向js方法传递参数具体实现
Aug 08 Javascript
js带按钮的提示框可供选择示例代码
Sep 17 Javascript
jquery.form.js框架实现文件上传功能案例解析(springmvc)
May 26 Javascript
实例解析angularjs的filter过滤器
Dec 14 Javascript
canvas学习之API整理笔记(一)
Dec 29 Javascript
Node.js Express 框架 POST方法详解
Jan 23 Javascript
利用n 升级工具升级Node.js版本及在mac环境下的坑
Feb 15 Javascript
Vuejs 页面的区域化与组件封装的实现
Sep 11 Javascript
浅谈es6中的元编程
Dec 01 Javascript
JavaScript 中的执行上下文和执行栈实例讲解
Feb 25 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
推荐文章系统(一)
2006/10/09 PHP
php面向对象全攻略 (五) 封装性
2009/09/30 PHP
php简单对象与数组的转换函数代码(php多层数组和对象的转换)
2011/05/18 PHP
使用 PHPStorm 开发 Laravel
2015/03/24 PHP
编辑浪子版表单验证类
2007/05/12 Javascript
javascript事件模型代码
2007/07/01 Javascript
清除div下面的所有标签的方法
2014/02/17 Javascript
兼容IE、firefox以及chrome的js获取时间(getFullYear)
2014/07/04 Javascript
JS实现方向键切换输入框焦点的方法
2015/08/19 Javascript
基于jQuery实现的无刷新表格分页实例
2016/02/17 Javascript
动态生成的DOM不会触发onclick事件的原因及解决方法
2016/08/06 Javascript
深入浅析jQuery对象$.html
2016/08/22 Javascript
浅谈JS之tagNaem和nodeName
2016/09/13 Javascript
微信小程序 首页制作简单实例
2017/04/07 Javascript
浅谈express 中间件机制及实现原理
2017/08/31 Javascript
jsonp跨域获取数据的基础教程
2018/07/01 Javascript
使用iView Upload 组件实现手动上传图片的示例代码
2018/10/01 Javascript
vue实现Input输入框模糊查询方法
2021/01/29 Javascript
[41:08]TNC vs VG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python实现统计给定字符串中重复模式最高子串功能示例
2018/05/16 Python
Python中numpy模块常见用法demo实例小结
2019/03/16 Python
Python pandas DataFrame操作的实现代码
2019/06/21 Python
python 代码运行时间获取方式详解
2020/09/18 Python
HTML5中Localstorage的使用教程
2015/07/09 HTML / CSS
HTML5 canvas基本绘图之图形变换
2016/06/27 HTML / CSS
在线购买廉价折扣书籍和小说:BookOutlet.com
2018/02/19 全球购物
Petmate品牌官方网站:宠物用品
2018/11/25 全球购物
编辑求职信样本
2013/12/16 职场文书
幼儿园家长评语大全
2014/04/16 职场文书
讲解员培训方案
2014/05/04 职场文书
小学生2014国庆节演讲稿:祖国在我心中
2014/09/21 职场文书
离婚协议书包括哪些内容
2014/10/16 职场文书
寻衅滋事罪辩护词
2015/05/21 职场文书
2019辞职报告范本3篇!
2019/07/23 职场文书
使用pandas模块实现数据的标准化操作
2021/05/14 Python
一些让Python代码简洁的实用技巧总结
2021/08/23 Python