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 jq 弹出层实例
Aug 25 Javascript
javascript实现继承的简单实例
Jul 26 Javascript
JS实现超简洁网页title标题跑动闪烁提示效果代码
Oct 23 Javascript
jQuery获取select选中的option的value值实现方法
Aug 29 Javascript
Bootstrap Modal遮罩弹出层代码分享
Nov 21 Javascript
Jquery Easyui验证组件ValidateBox使用详解(20)
Dec 18 Javascript
JS日程管理插件FullCalendar中文说明文档
Feb 06 Javascript
js实现多张图片延迟加载效果
Jul 17 Javascript
vue.js框架实现表单排序和分页效果
Aug 09 Javascript
解决Webpack 热部署检测不到文件变化的问题
Feb 22 Javascript
Vue-Router模式和钩子的用法
Feb 28 Javascript
《javascript设计模式》学习笔记一:Javascript面向对象程序设计对象成员的定义分析
Apr 07 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
全国FM电台频率大全 - 5 内蒙古自治区
2020/03/11 无线电
phpadmin如何导入导出大数据文件及php.ini参数修改
2013/02/18 PHP
如何阻止网站被恶意反向代理访问(防网站镜像)
2014/03/18 PHP
win7安装php框架Yii的方法
2016/01/25 PHP
PHP+mysql+ajax轻量级聊天室实现方法详解
2016/10/17 PHP
服务端 VBScript 与 JScript 几个相同特性的写法 By shawl.qiu
2007/03/06 Javascript
javascript操作文本框readOnly
2007/05/15 Javascript
javascript encodeURI和encodeURIComponent的比较
2010/04/03 Javascript
JavaScript设计模式之工厂模式和构造器模式
2015/02/11 Javascript
学习Bootstrap组件之下拉菜单
2015/07/28 Javascript
jQuery实现iframe父窗体和子窗体的相互调用
2016/06/17 Javascript
老生常谈combobox和combotree模糊查询
2017/04/17 Javascript
jQuery实现基本动画效果的方法详解
2018/09/06 jQuery
vue-router beforeEach跳转路由验证用户登录状态
2018/12/26 Javascript
微信小程序自定义tabBar在uni-app的适配详解
2019/09/30 Javascript
小程序如何自主实现拦截器的示例代码
2019/11/04 Javascript
vue props对象validator自定义函数实例
2019/11/13 Javascript
Javascript类型判断相关例题及解析
2020/08/26 Javascript
[02:08:58]2014 DOTA2国际邀请赛中国区预选赛 Ne VS CIS
2014/05/22 DOTA
使用Python判断IP地址合法性的方法实例
2014/03/13 Python
Python中实现参数类型检查的简单方法
2015/04/21 Python
Python实现判断并移除列表指定位置元素的方法
2018/04/13 Python
在python win系统下 打开TXT文件的实例
2018/04/29 Python
python 使用事件对象asyncio.Event来同步协程的操作
2020/05/04 Python
python变量的作用域是什么
2020/05/26 Python
使用pycharm和pylint检查python代码规范操作
2020/06/09 Python
Python爬虫之爬取淘女郎照片示例详解
2020/07/28 Python
Python基于Webhook实现github自动化部署
2020/11/28 Python
解决Pymongo insert时会自动添加_id的问题
2020/12/05 Python
CSS3动画特效在活动页中的应用
2020/01/21 HTML / CSS
canvas绘制太极图的实现示例
2020/04/29 HTML / CSS
英国最大的专业户外零售商:Mountain Warehouse
2018/06/06 全球购物
Myprotein意大利官网:欧洲第一运动营养品牌
2018/11/22 全球购物
兰蔻法国官方网站:Lancôme法国
2020/02/22 全球购物
Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型
2013/10/30 面试题
中学生运动会口号
2014/06/07 职场文书