vue中的自定义分页插件组件的示例


Posted in Javascript onAugust 18, 2018

介绍一下,已经有很多的vue分页的组件了,大家都是大同小易,那么我就结合自身的使用,写出了一片文章

vue中的自定义分页插件组件的示例

vue中的自定义分页插件组件的示例

首先在新建一个分页模块

vue中的自定义分页插件组件的示例

在模块中引入相应的代码,(内有详细的注释)

template中

<div class="page-bar">
 <ul>
  <li class="first">
   <span>共{{dataNum}}条记录 第 {{cur}} / {{all}} 页</span>
  </li>
  <li v-if="cur>1">
   <a v-on:click="cur--,pageClick()"><</a>//点击上一页
  </li>
  <li v-if="cur==1">
   <a class="banclick"><</a>//点击第一页时显示
  </li>
  <li class="li_a" v-for="index in indexs" v-bind:class="{ 'active': cur == index}">
   <a v-on:click="btnClick(index)">{{ index }}</a>//页码
  </li>
  <li v-if="cur!=all">
   <a v-on:click="cur++,pageClick()">></a>//点击下一页
  </li>
  <li v-if="cur == all">
   <a class="banclick">></a> //点击最后一页时显示
  </li>
  <li class="last_li">
   <span>共<i>{{all}}</i>页</span> // 共有多少页
  </li>
 </ul>
</div>

style中的内容

.page-bar a {
 width: 34px;
 height: 34px;
 border: 1px solid #ddd;
 text-decoration: none;
 position: absolute;
 top: 50%;
 left: 50%;
 transform: translate(-50%,-50%);
 /*margin-left: -1px;*/
 line-height: 34px;
 color: #333;
 cursor: pointer
}

.page-bar .li_a a:hover {
 background-color: #eee;
 border: 1px solid #40A9FF;
 color: #40A9FF;
}

.page-bar a.banclick {
 cursor: not-allowed;
}

.page-bar .active a {
 color: #fff;
 cursor: default;
 background-color: #1890FF;
 border-color: #1890FF;
}

.page-bar i {
 font-style: normal;
 color: #d44950;
 margin: 0px 4px;
 font-size: 14px;
}

script

export default {
 //显示的声明组件
 name: "paging",
 //从父级组件中传值过来的,你可以自己设置名字,但是需要跟父级传入的名字一致!
 props : ["dataAll","dataCur","datanum","dataDatanum"],
 

 data() {
  return {
   all: this.dataAll, //总页数
   cur: this.dataCur ,//当前页码
   num: this.datanum , //一页显示的数量 奇数
   dataNum: this.dataDatanum,//数据的数量
   
  }

 },
 watch: {
  cur: function(oldValue, newValue) {
  //父组件通过change方法来接受当前的页码
   this.$emit('change', oldValue)
   //这里是直接点击执行函数
  }
 },
 methods: {
  btnClick: function(data) { //页码点击事件
   if(data != this.cur) {
    this.cur = data
   }
  },
  pageClick: function() {
   console.log('现在在' + this.cur + '页');
   //父组件通过change方法来接受当前的页码
    //这里是点击下一页执行函数
   this.$emit('change', this.cur)
  }
 },

 computed: {
  indexs: function() {
   var left = 1;
   var right = this.all;
   var ar = [];
   if(this.all >= this.num ) {
    if(this.cur > 3 && this.cur < this.all - 2) {
     left = this.cur - (this.num-1)/2
     right = this.cur + (this.num-1)/2
    } else {
     if(this.cur <= 3) {
      left = 1
      right = this.num
     } else {
      right = this.all
      left = this.all - (this.num - 1);
     }
    }
   }
   while(left <= right) {
    ar.push(left)
    left++
   }
   return ar
  }

 }

}

父级的组件内容

<template>
//这是我自己设置的,可以根据情况不用设置不同的样式
  <div class="page">
  //这里时通过props传值到子级,并有一个回调change的函数,来获取自己传值到父级的值
  <paging :dataAll="all" :dataCur="cur" :datanum="num" :dataDatanum="dataNum" @change="pageChange"></paging>
 </div>
</template>
<style scoped>
 .page {
 width: 100%;
 min-width: 1068px;
 height: 36px;
 margin: 40px auto;
 }
</style>
<script>
import Paging from './paging'
export default {
 name: "homepage",
 components: {
  Paging
 },
 data() {
  return {
   all: 40, //总页数
   cur: 1, //当前页码
   num: 7, //一页显示的数量 必须是奇数
   dataNum: 400, //数据的数量
  }
 },
 methods: {
  //子级传值到父级上来的动态拿去
  pageChange: function(page) {
   this.cur = page
  }
 }
}
</script>

最后重新保存,重新运行

npm run dev

vue中的自定义分页插件组件的示例

注意

可以根据自己喜好来自己动手做一个分页,我在其它人的基础之上添加了页码以及当前页面数,也可以添加跳转的页数(暂时没有做),也可以更改css样式来改变!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
web 页面分页打印的实现
Jun 22 Javascript
JQuery异步获取返回值中文乱码的解决方法
Jan 29 Javascript
简单掌握JavaScript中const声明常量与变量的用法
May 21 Javascript
JavaScript SHA512加密算法详细代码
Oct 06 Javascript
JavaScript实现简单精致的图片左右无缝滚动效果
Mar 16 Javascript
javascript兼容性(实例讲解)
Aug 15 Javascript
Vue精简版风格概述
Jan 30 Javascript
vue-cli开发环境实现跨域请求的方法
Apr 07 Javascript
Vue 应用中结合vux使用微信 jssdk的方法
Aug 28 Javascript
Element Input组件分析小结
Oct 11 Javascript
简单通过settimeout看javascript的运行机制
May 10 Javascript
javascript设计模式 ? 工厂模式原理与应用实例分析
Apr 09 Javascript
vue 自定义提示框(Toast)组件的实现代码
Aug 17 #Javascript
微信小程序实现即时通信聊天功能的实例代码
Aug 17 #Javascript
在iFrame子页面里实现模态框的方法
Aug 17 #Javascript
layer弹出层 iframe层去掉滚动条的实例代码
Aug 17 #Javascript
解决layer弹层遮罩挡住窗体的问题
Aug 17 #Javascript
layer.close()关闭进度条和Iframe窗的方法
Aug 17 #Javascript
Vue组件创建和传值的方法
Aug 17 #Javascript
You might like
咖啡冲泡指南 咖啡有哪些制作方式 单品咖啡 意式咖啡
2021/03/06 冲泡冲煮
php中一个完整表单处理实现代码
2011/11/10 PHP
PHP模板引擎Smarty内建函数详解
2016/04/11 PHP
关于Curl在Swoole协程中的解决方案详析
2019/09/12 PHP
Thinkphp 框架扩展之应用模式实现方法分析
2020/04/27 PHP
jQuery 打造动态下滑菜单实现说明
2010/04/15 Javascript
一个JQuery操作Table的代码分享
2012/03/30 Javascript
javascript实现的简单的表单验证
2015/07/10 Javascript
javaScript给元素添加多个class的简单实现
2016/07/20 Javascript
原生js实现addclass,removeclass,toggleclasss实例
2016/11/24 Javascript
Vue.js路由组件vue-router使用方法详解
2016/12/02 Javascript
layer实现弹窗提交信息
2016/12/12 Javascript
Node.js 使用命令行工具检查更新
2017/06/08 Javascript
angular2 ng build部署后base文件路径问题详细解答
2017/07/15 Javascript
vue中使用vue-router切换页面时滚动条自动滚动到顶部的方法
2017/11/28 Javascript
jQuery EasyUI window窗口使用实例代码
2017/12/25 jQuery
jQuery实现获取动态添加的标签对象示例
2018/06/28 jQuery
解决vue cli使用typescript后打包巨慢的问题
2019/09/30 Javascript
python使用cookie库操保存cookie详解
2014/03/03 Python
在Python中编写数据库模块的教程
2015/04/29 Python
Python列表list内建函数用法实例分析【insert、remove、index、pop等】
2017/07/24 Python
python利用dir函数查看类中所有成员函数示例代码
2017/09/08 Python
解决Python的str强转int时遇到的问题
2018/04/09 Python
python文件绝对路径写法介绍(windows)
2019/12/25 Python
django商品分类及商品数据建模实例详解
2020/01/03 Python
python模式 工厂模式原理及实例详解
2020/02/11 Python
keras自定义回调函数查看训练的loss和accuracy方式
2020/05/23 Python
canvas基础之图形验证码的示例
2018/01/02 HTML / CSS
美国杂志订阅折扣与优惠网站:Magazines.com
2016/08/31 全球购物
StubHub新西兰:购买和出售你的门票
2019/04/22 全球购物
法国足球商店:Footcenter
2019/07/06 全球购物
精美的手工家居和生活用品:Nkuku
2019/11/01 全球购物
党员承诺书范文
2014/05/19 职场文书
音乐教师求职信
2014/06/28 职场文书
2015大学党建带团建工作总结
2015/07/23 职场文书
python热力图实现的完整实例
2022/06/25 Python