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 拾漏补遗
Dec 27 Javascript
学习面向对象之面向对象的术语
Nov 30 Javascript
js实现连续英文字符自动换行兼容ie6 ie7和firefox
Sep 06 Javascript
一个实用的图片切换支持点击切换和自动轮播
Sep 09 Javascript
jQuery实现的购物车物品数量加减功能代码
Nov 16 Javascript
谈谈VUE种methods watch和compute的区别和联系
Aug 01 Javascript
Vue实现搜索 和新闻列表功能简单范例
Mar 16 Javascript
详解vue 图片上传功能
Apr 30 Javascript
微信小程序 函数防抖 解决重复点击消耗性能问题实现代码
Sep 12 Javascript
layui监听select变化,以及设置radio选中的方法
Sep 24 Javascript
Vue学习之常用指令实例详解
Jan 06 Javascript
JavaScript前后端JSON使用方法教程
Nov 23 Javascript
浅谈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 $_ENV为空的原因分析
2009/06/01 PHP
php魔术方法与魔术变量、内置方法与内置变量的深入分析
2013/06/03 PHP
探讨:如何使用PhpDocumentor生成文档
2013/06/25 PHP
smarty模板引擎使用内建函数foreach循环取出所有数组值的方法
2015/01/22 PHP
Laravel利用gulp如何构建前端资源详解
2018/06/03 PHP
Laravel框架实现抢红包功能示例
2019/10/31 PHP
JavaScript 比较时间大小的代码
2010/04/24 Javascript
跨浏览器开发经验总结(三)   警惕“IE依赖综合症”
2010/05/13 Javascript
JS无限树状列表实现代码
2011/01/11 Javascript
javascript数组详解
2014/10/22 Javascript
深入分析原生JavaScript事件
2014/12/29 Javascript
JS根据生日月份和日期计算星座的简单实现方法
2016/11/24 Javascript
lhgcalendar时间插件限制只能选择三个月的实现方法
2017/07/03 Javascript
vue项目部署上线遇到的问题及解决方法
2018/06/10 Javascript
有关vue 开发钉钉 H5 微应用 dd.ready() 不执行问题及快速解决方案
2020/05/09 Javascript
python检测lvs real server状态
2014/01/22 Python
python求pi的方法
2014/10/08 Python
在Python中使用matplotlib模块绘制数据图的示例
2015/05/04 Python
Python装饰器入门学习教程(九步学习)
2016/01/28 Python
Python利用ElementTree模块处理XML的方法详解
2017/08/31 Python
Python实现自定义函数的5种常见形式分析
2018/06/16 Python
解决python3 安装完Pycurl在import pycurl时报错的问题
2018/10/15 Python
Python面向对象基础入门之设置对象属性
2018/12/11 Python
详解python中index()、find()方法
2019/08/29 Python
通过Python扫描代码关键字并进行预警的实现方法
2020/05/24 Python
python 利用Pyinstaller打包Web项目
2020/10/23 Python
关于老式浏览器兼容HTML5和CSS3的问题
2016/06/01 HTML / CSS
英国自行车商店:AW Cycles
2021/02/24 全球购物
链表面试题-一个链表的结点结构
2015/05/04 面试题
一个SQL面试题
2014/08/21 面试题
Exception类的常用方法
2012/06/16 面试题
《识字五》教学反思
2014/03/01 职场文书
餐厅筹备计划书
2014/04/25 职场文书
小学运动会班级口号
2014/06/09 职场文书
师德师风学习材料
2014/12/19 职场文书
2015年社区党务工作总结
2015/04/21 职场文书