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 相关文章推荐
javascript 极速 隐藏/显示万行表格列只需 60毫秒
Mar 28 Javascript
javascript中的new使用
Mar 20 Javascript
一段批量给页面上的控件赋值js
Jun 19 Javascript
JavaScript常用全局属性与方法记录积累
Jul 03 Javascript
jquery操作angularjs对象
Jun 26 Javascript
js仿黑客帝国字母掉落效果代码分享
Nov 08 Javascript
js纯数字逐一停止显示效果的实现代码
Mar 16 Javascript
javascript和jquery实现用户登录验证
May 04 Javascript
jstree单选功能的实现方法
Jun 07 Javascript
Vue拖拽组件开发实例详解
May 11 Javascript
使用p5.js临摹动态图形
Oct 23 Javascript
使用next.js开发网址缩短服务的方法
Jun 17 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
PHP DataGrid 实现代码
2009/08/12 PHP
php从完整文件路径中分离文件目录和文件名的方法
2015/03/13 PHP
优化JavaScript脚本的性能的几个注意事项
2006/12/22 Javascript
写js时遇到的一些小问题
2010/12/06 Javascript
javascript时间函数大全
2014/06/30 Javascript
我的Node.js学习之路(四)--单元测试
2014/07/06 Javascript
alert出数组中的随即值代码
2014/09/25 Javascript
jQuery 插件开发指南
2014/11/14 Javascript
JavaScript原生xmlHttp与jquery的ajax方法json数据格式实例
2015/12/04 Javascript
js 实现数值的千分位及保存小数方法(推荐)
2016/08/01 Javascript
AngularJS辅助库browserTrigger用法示例
2016/11/03 Javascript
jQuery 判断元素整理汇总
2017/02/28 Javascript
javascript实现日期三级联动下拉框选择菜单
2020/12/03 Javascript
Vue+Element使用富文本编辑器的示例代码
2017/08/14 Javascript
vue2.0使用swiper组件实现轮播效果
2017/11/27 Javascript
微信小程序中的canvas 文字断行和省略号显示功能的处理方法
2018/11/14 Javascript
简单实现vue中的依赖收集与响应的方法
2019/02/18 Javascript
TypeScript开发Node.js程序的方法
2019/04/30 Javascript
JS判断数组里是否有重复元素的方法小结
2019/05/21 Javascript
使用PreloadJS加载图片资源的基础方法详解
2020/02/03 Javascript
js实现轮播图特效
2020/05/28 Javascript
解决Antd 里面的select 选择框联动触发的问题
2020/10/24 Javascript
JavaScript实现打字游戏
2021/02/19 Javascript
[01:06:12]VP vs NIP 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
深入理解python try异常处理机制
2016/06/01 Python
Python Celery多队列配置代码实例
2019/11/22 Python
Django数据结果集序列化并展示实现过程
2020/04/22 Python
Python Pygame实现俄罗斯方块
2021/02/19 Python
幼师自荐信
2013/10/26 职场文书
大学军训感言1000字
2014/02/25 职场文书
个人工作表现评价材料
2014/09/21 职场文书
领导班子整改方案
2014/10/25 职场文书
一年级数学上册复习计划
2015/01/17 职场文书
2019最新激励员工口号大全!
2019/06/28 职场文书
导游词之湖北梁子湖
2019/11/07 职场文书
Python实现聚类K-means算法详解
2022/07/15 Python