Vue分页组件实例代码


Posted in Javascript onApril 17, 2017

当前组件依赖bootstrap样式,使用前请先引用相关css。

Vue.component('pagination', {
  template: `<nav aria-label="Page navigation">
    <ul class="pagination">
      <li :class="{'disabled': pageNum == 1}"><a href="#" v-on:click.prevent="turnToPage(1)" title="首页" aria-label="首页"><i class="fa fa-fast-backward"></i></a></li>
      <li :class="{'disabled': pageNum == 1}"><a href="#" v-on:click.prevent="turnToPage(pageNum - 1)" title="上一页" aria-label="上一页"><i class="fa fa-backward"></i></a></li>
      <li v-if="pageNum > 4"><a href="#" v-on:click.prevent="turnToPage(pageNum - 4)">...</a></li>
      <li v-if="pageNum <= 4 && pageNum >1"><a href="#" v-on:click.prevent="turnToPage(1)">1</a></li>
      <li v-if="pageNum - 3 > 1"><a href="#" v-on:click.prevent="turnToPage(pageNum - 3)">{{pageNum-3}}</a></li>
      <li v-if="pageNum - 2 > 1"><a href="#" v-on:click.prevent="turnToPage(pageNum - 2)">{{pageNum-2}}</a></li>
      <li v-if="pageNum - 1 > 1"><a href="#" v-on:click.prevent="turnToPage(pageNum - 1)">{{pageNum-1}}</a></li>
      <li class="active"><a href="#" v-on:click.prevent="turnToPage(pageNum)">{{pageNum}}</a></li>
      <li v-if="pageNum + 1 < pageTotal"><a href="#" v-on:click.prevent="turnToPage(pageNum + 1)">{{pageNum+1}}</a></li>
      <li v-if="pageNum + 2 < pageTotal"><a href="#" v-on:click.prevent="turnToPage(pageNum + 2)">{{pageNum+2}}</a></li>
      <li v-if="pageNum + 3 < pageTotal"><a href="#" v-on:click.prevent="turnToPage(pageNum + 3)">{{pageNum+3}}</a></li>
      <li v-if="pageNum >= pageTotal - 4 && pageNum < pageTotal"><a href="#" v-on:click.prevent="turnToPage(pageTotal)">{{pageTotal}}</a></li>
      <li v-if="pageNum < pageTotal - 4"><a href="#" v-on:click.prevent="turnToPage(pageNum + 4)">...</a></li>
      <li :class="{'disabled': pageNum == pageTotal}"><a href="#" v-on:click.prevent="turnToPage(pageNum + 1)" title="下一页" aria-label="下一页"><i class="fa fa-forward"></i></a></li>
      <li :class="{'disabled': pageNum == pageTotal}"><a href="#" v-on:click.prevent="turnToPage(pageTotal)" title="尾页" aria-label="尾页"><i class="fa fa-fast-forward"></i></a></li>
    </ul>
  </nav>`,
  props: {
    pageNum: Number,
    pageSize: Number,
    totalItemCount: Number,
  },
  computed: {
    pageTotal: function () {
      return Math.ceil(this.totalItemCount / this.pageSize)
    }
  },
  methods: {
    turnToPage: function (num) {
      if (num > this.pageTotal || num <= 0) {
        //toastr.error(`当前页码超出了范围。页码:${num}`, '错误')
        return false
      }
      this.$emit('change', num)
    }
  }
})

props定义三个属性:当前页码,当前页显示数量,总数量

computed定义了一个计算方法:获取总数量/当前页显示数量,向上取整,默认取10个

methods定义了一个根据页码跳转方法:最终用于触发change事件,$emit用于抛出自定义事件,组件外可以捕获当前定义的change事件

html组件显示:

<pagination :page-num="criteria.page.num" :page-size="criteria.page.size" :total-item-count="itemsCount" v-on:change="skiptoPage"></pagination>

以上的值为自己传入的值
let vm = new Vue({
  el: '#app',
  data: {
    criteria: {
      keyword: '',
      page: { num: 1, size: 10 }
    },
    itemsCount: 0
  },
methods: {



skiptoPage: function (num) {  




this.criteria.page.num = num;


}

}
});

以上方法是自定义事件change的方法,你们可以自己去修改内容。

效果图

Vue分页组件实例代码

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

Javascript 相关文章推荐
javascript 函数式编程
Aug 16 Javascript
jquery 事件冒泡的介绍以及如何阻止事件冒泡
Dec 25 Javascript
jQuery实现Twitter的自动文字补齐特效
Nov 28 Javascript
jquery Easyui快速开发总结
Aug 20 Javascript
基于JavaScript操作DOM常用的API小结
Dec 01 Javascript
限制只能输入数字的实现代码
May 16 Javascript
浅谈ElementUI中switch回调函数change的参数问题
Aug 24 Javascript
vue组件tabbar使用方法详解
Nov 06 Javascript
Vue-drag-resize 拖拽缩放插件的使用(简单示例)
Dec 04 Javascript
Angular处理未可知异常错误的方法详解
Jan 17 Javascript
一篇文章弄清楚Ajax请求的五个步骤
Mar 17 Javascript
解决vue中provide inject的响应式监听
Apr 19 Vue.js
浅谈react.js 之 批量添加与删除功能
Apr 17 #Javascript
react.js 获取真实的DOM节点实例(必看)
Apr 17 #Javascript
老生常谈jacascript DOM节点获取
Apr 17 #Javascript
老生常谈combobox和combotree模糊查询
Apr 17 #Javascript
vue实现简单表格组件实例详解
Apr 16 #Javascript
JavaScript实现网页头部进度条刷新
Apr 16 #Javascript
利用JavaScript在网页实现八数码启发式A*算法动画效果
Apr 16 #Javascript
You might like
PHP分多步骤填写发布信息的简单方法实例代码
2012/09/23 PHP
php实现图形显示Ip地址的代码及注释
2014/01/20 PHP
两千行代码的PHP学习笔记汇总
2014/10/05 PHP
PHP判断数据库中的记录是否存在的方法
2014/11/14 PHP
Yii模型操作之criteria查找数据库的方法
2016/07/15 PHP
Python中使用django form表单验证的方法
2017/01/16 PHP
javascript语句中的CDATA标签的意义
2007/05/09 Javascript
JavaScript delete 属性的使用
2009/10/08 Javascript
JavaScript设计模式之适配器模式介绍
2014/12/28 Javascript
jQuery制作拼图小游戏
2015/01/12 Javascript
jQuery选择器之基本选择器与层次选择器
2015/03/03 Javascript
JS+DIV实现鼠标划过切换层效果的方法
2015/05/25 Javascript
浅析BootStrap栅格系统
2016/06/07 Javascript
vue实现一个移动端屏蔽滑动的遮罩层实例
2017/06/08 Javascript
jQuery Datatables表头不对齐的解决办法
2017/11/27 jQuery
layer弹出层倒计时关闭的实现方法
2019/09/27 Javascript
vue 使用外部JS与调用原生API操作示例
2019/12/02 Javascript
node.js如何根据URL返回指定的图片详解
2020/10/21 Javascript
[01:15:44]首部DOTA2纪录片今日23时全网上映
2014/03/19 DOTA
深入理解python中函数传递参数是值传递还是引用传递
2017/11/07 Python
python实现对excel进行数据剔除操作实例
2017/12/07 Python
Python实现的求解最小公倍数算法示例
2018/05/03 Python
Python3编码问题 Unicode utf-8 bytes互转方法
2018/10/26 Python
简单了解如何封装自己的Python包
2020/07/08 Python
matplotlib基础绘图命令之errorbar的使用
2020/08/13 Python
基于python实现简单C/S模式代码实例
2020/09/14 Python
使用Django的JsonResponse返回数据的实现
2021/01/15 Python
pytorch 把图片数据转化成tensor的操作
2021/03/04 Python
基于HTML5新特性Mutation Observer实现编辑器的撤销和回退操作
2016/01/11 HTML / CSS
英国舒适型鞋履品牌:FitFlop
2017/05/17 全球购物
EMPHASIS艾斐诗官网:周生生旗下原创精品珠宝品牌
2020/12/17 全球购物
软件工程师岗位职责
2013/11/16 职场文书
有创意的广告词
2014/03/18 职场文书
教师见习总结范文
2015/06/23 职场文书
学校2016年圣诞节活动总结
2016/03/31 职场文书
MongoDB数据库之添删改查
2022/04/26 MongoDB