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 相关文章推荐
TextArea 控件的最大长度问题(js json)
Dec 16 Javascript
jQuery学习5 jQuery事件模型
Feb 07 Javascript
extjs4 treepanel动态改变行高度示例
Dec 17 Javascript
JavaScript对象的property属性详解
Apr 01 Javascript
第五篇Bootstrap 排版
Jun 21 Javascript
JavaScript Drum Kit 指南(纯 JS 模拟敲鼓效果)
Jul 23 Javascript
详解基于node的前端项目编译时内存溢出问题
Aug 01 Javascript
jQueryMobile之窗体长内容的缺陷与解决方法实例分析
Sep 20 jQuery
微信小程序实现验证码获取倒计时效果
Feb 08 Javascript
JavaScript 跨域之POST实现方法
May 07 Javascript
浅谈vue生命周期共有几个阶段?分别是什么?
Aug 07 Javascript
vue二维数组循环嵌套方式 循环数组、循环嵌套数组
Apr 24 Vue.js
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
php 生成静态页面的办法与实现代码详细版
2010/02/15 PHP
ThinkPHP缓存方法S()概述
2014/06/13 PHP
PHP清除字符串中所有无用标签的方法
2014/12/01 PHP
PHP在线调试执行的实现方法(附demo源码)
2016/04/28 PHP
php数据库的增删改查 php与javascript之间的交互
2017/08/31 PHP
限制复选框的最大可选数
2006/07/01 Javascript
javascript setAttribute, getAttribute 在不同浏览器上的不同表现
2010/08/05 Javascript
jQuery 选择器、DOM操作、事件、动画
2010/11/25 Javascript
Javascript事件热键兼容ie|firefox
2010/12/30 Javascript
jquery获取table中的某行全部td的内容方法
2013/03/08 Javascript
Javascript 命名空间模式
2013/11/01 Javascript
jquery中交替点击事件toggle方法的使用示例
2013/12/08 Javascript
JS将制定内容复制到剪切板示例代码
2014/02/11 Javascript
浏览器兼容的JS写法总结
2016/04/27 Javascript
AngularJS中的Promise详细介绍及实例代码
2016/12/13 Javascript
D3.js进阶系列之CSV表格文件的读取详解
2017/06/06 Javascript
vue微信分享 vue实现当前页面分享其他页面
2017/12/02 Javascript
vue element项目引入icon图标的方法
2018/06/06 Javascript
微信小程序绑定手机号获取验证码功能
2019/10/22 Javascript
Vue封装Axios请求和拦截器的步骤
2020/09/16 Javascript
js节流防抖应用场景,以及在vue中节流防抖的具体实现操作
2020/09/21 Javascript
Python 列表理解及使用方法
2017/10/27 Python
手把手教你用python抢票回家过年(代码简单)
2018/01/21 Python
详解Python中is和==的区别
2019/03/21 Python
Python实现计算长方形面积(带参数函数demo)
2020/01/18 Python
Python爬虫爬取有道实现翻译功能
2020/11/27 Python
CSS+jQuery实现的在线答题功能
2015/04/25 HTML / CSS
html5给汉字加拼音加进度条的实现代码
2020/04/07 HTML / CSS
台湾专柜女包:KINAZ
2019/12/26 全球购物
实习生个人找工作的自我评价
2013/10/30 职场文书
社区庆中秋节活动方案
2014/02/07 职场文书
政风行风评议整改方案
2014/09/15 职场文书
联谊会开场白
2015/06/01 职场文书
秋菊打官司观后感
2015/06/03 职场文书
2015大一新生军训感言
2015/08/01 职场文书
Python字典的基础操作
2021/11/01 Python