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 CHECKBOX全选,取消全选,反选方法三
Aug 30 Javascript
ASP SQL防注入的方法
Dec 25 Javascript
基于Jquery的温度计动画效果
Jun 18 Javascript
jQuery Ajax 仿AjaxPro.Utility.RegisterTypeForAjax辅助方法
Sep 27 Javascript
Javascript弹出窗口的各种方法总结
Nov 11 Javascript
js插件方式打开pdf文件(浏览器pdf插件分享)
Dec 20 Javascript
js+css实现的简单易用兼容好的分页
Dec 30 Javascript
jQuery实现为图片添加镜头放大效果的方法
Jun 25 Javascript
基于bootstrap插件实现autocomplete自动完成表单
May 07 Javascript
javascript中this用法实例详解
Apr 06 Javascript
《javascript设计模式》学习笔记七:Javascript面向对象程序设计组合模式详解
Apr 08 Javascript
vue实力踩坑之push当前页无效
Apr 10 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版(5)
2006/10/09 PHP
PHP中使用Imagick操作PSD文件实例
2015/01/26 PHP
php使用Jpgraph绘制3D饼状图的方法
2015/06/10 PHP
PHP开发APP端微信支付功能
2017/02/17 PHP
利用PHPExcel读取Excel的数据和导出数据到Excel
2017/05/12 PHP
PHP使用preg_split和explode分割textarea存放内容的方法分析
2017/07/03 PHP
浅谈PHP接入(第三方登录)QQ登录 OAuth2.0 过程中遇到的坑
2017/10/13 PHP
PHP静态延迟绑定和普通静态效率的对比
2017/10/20 PHP
PHP defined()函数的使用图文详解
2019/07/20 PHP
php引用和拷贝的区别知识点总结
2019/09/23 PHP
Javascript下的keyCode键码值表
2007/04/10 Javascript
基于jquery的一个图片hover的插件
2010/04/24 Javascript
javascript操作excel生成报表全攻略
2014/05/04 Javascript
浅谈关于angularJs中使用$.ajax的注意点
2017/08/12 Javascript
Vue表单类的父子组件数据传递示例
2018/05/03 Javascript
用node撸一个监测复联4开售短信提醒的实现代码
2019/04/10 Javascript
Jquery属性的获取/设置及样式添加/删除操作技巧分析
2019/12/23 jQuery
Vue实现浏览器打印功能的代码
2020/04/17 Javascript
小程序实现简单语音聊天的示例代码
2020/07/24 Javascript
微信小程序实现上传照片代码实例解析
2020/08/04 Javascript
如何基于viewport vm适配移动端页面
2020/11/13 Javascript
JavaScript仿京东轮播图效果
2021/02/25 Javascript
[03:07]DOTA2英雄基础教程 冰霜诅咒极寒幽魂
2013/12/06 DOTA
python 动态获取当前运行的类名和函数名的方法
2014/04/15 Python
Python中取整的几种方法小结
2017/01/06 Python
基于python的Tkinter编写登陆注册界面
2017/06/30 Python
Python语言进阶知识点总结
2019/05/28 Python
python快速编写单行注释多行注释的方法
2019/07/31 Python
python 写函数在一定条件下需要调用自身时的写法说明
2020/06/01 Python
Python过滤掉numpy.array中非nan数据实例
2020/06/08 Python
纯html5+css3下拉导航菜单实现代码
2013/03/18 HTML / CSS
vue项目实现分页效果
2021/03/24 Vue.js
幼儿评语大全
2014/04/30 职场文书
关于九一八事变的演讲稿2014
2014/09/17 职场文书
2015年毕业实习工作总结
2014/12/12 职场文书
2015年宣传工作总结
2015/04/08 职场文书