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 innerText和innerHtml应用
Jan 28 Javascript
Javascript中自动切换焦点实现代码
Dec 15 Javascript
jQuery中insertBefore()方法用法实例
Jan 08 Javascript
JavaScript正则表达式匹配 div  style标签
Mar 15 Javascript
两种JavaScript的AES加密方式(可与Java相互加解密)
Aug 02 Javascript
Centos7 中 Node.js安装简单方法
Nov 02 Javascript
DOM 事件的深入浅出(二)
Dec 05 Javascript
Angular2里获取(input file)上传文件的内容的方法
Sep 05 Javascript
jQuery实现动态显示select下拉列表数据的方法
Feb 05 jQuery
Vue动态修改网页标题的方法及遇到问题
Jun 09 Javascript
vue计算属性+vue中class与style绑定(推荐)
Mar 30 Javascript
html5 录制mp3音频支持采样率和比特率设置
Jul 15 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格式化金额函数分享
2015/02/02 PHP
PHP XML Expat解析器知识点总结
2019/02/15 PHP
PHP实现的抓取小说网站内容功能示例
2019/06/27 PHP
Ext javascript建立超链接,进行事件处理的实现方法
2009/03/22 Javascript
JavaScript 获取用户客户端操作系统版本
2009/08/25 Javascript
使用jQuery轻松实现Ajax的实例代码
2010/08/16 Javascript
JS操作iframe里的dom(实例讲解)
2014/01/29 Javascript
jquery让指定的元素闪烁显示的方法
2015/03/17 Javascript
Javascript函数的参数
2015/07/16 Javascript
AngularJs定制样式插入到ueditor中的问题小结
2016/08/01 Javascript
BootStrap Validator使用注意事项(必看篇)
2016/09/28 Javascript
使用Node.js实现RESTful API的示例
2017/08/01 Javascript
PHP 实现一种多文件上传的方法
2017/09/20 Javascript
基于JavaScript实现瀑布流布局
2018/08/15 Javascript
Vue引入Stylus知识点总结
2020/01/16 Javascript
解决python3运行selenium下HTMLTestRunner报错的问题
2018/12/27 Python
Ubuntu18.04下python版本完美切换的解决方法
2019/06/14 Python
利用Python将图片中扭曲矩形的复原
2020/09/07 Python
python中not、and和or的优先级与详细用法介绍
2020/11/03 Python
利用Python过滤相似文本的简单方法示例
2021/02/03 Python
python连接手机自动搜集蚂蚁森林能量的实现代码
2021/02/24 Python
Feelunique美国:欧洲大型的在线美妆零售电商
2018/11/04 全球购物
Kusmi茶美国官网:优质散叶茶和茶包
2019/10/13 全球购物
MUGLER官方网站:蒂埃里·穆勒香水
2019/11/26 全球购物
女大学生个人求职信
2013/12/09 职场文书
2014年应届大学生毕业自我鉴定
2014/01/31 职场文书
毕业生大学生活自我总结
2014/01/31 职场文书
在校大学生自我评价范文
2014/09/12 职场文书
机动车交通事故协议书
2015/01/29 职场文书
纪检部部长竞选稿
2015/11/21 职场文书
2016年校园重阳节广播稿
2015/12/18 职场文书
html+css实现文字折叠特效实例
2021/06/02 HTML / CSS
Python中的tkinter库简单案例详解
2022/01/22 Python
python_tkinter弹出对话框创建
2022/03/20 Python
Python中Schedule模块使用详解 周期任务神器
2022/04/19 Python
vue项目如何打包之项目打包优化(让打包的js文件变小)
2022/04/30 Vue.js