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 相关文章推荐
jquery tools之tooltip
Jul 25 Javascript
extjs 学习笔记(二) Ext.Element类
Oct 13 Javascript
实现js保留小数点后N位的代码
Nov 13 Javascript
微信公众号支付H5调用支付解析
Nov 04 Javascript
Vue2递归组件实现树形菜单
Apr 10 Javascript
javascript+jQuery实现360开机时间显示效果
Nov 03 jQuery
Vue响应式原理深入解析及注意事项
Dec 11 Javascript
基于JavaScript实现每日签到打卡轨迹功能
Nov 29 Javascript
react+redux仿微信聊天界面
Jun 21 Javascript
javascript中call,apply,callee,caller用法实例分析
Jul 24 Javascript
JavaScript之Blob对象类型的具体使用方法
Nov 29 Javascript
JQuery通过键盘控制键盘按下与松开触发事件
Aug 07 jQuery
浅谈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
虫族 Zerg 历史背景
2020/03/14 星际争霸
Zend引擎的发展 [15]
2006/10/09 PHP
PHP连接SQLSERVER 注意事项(附dll文件下载)
2012/06/28 PHP
php中使用__autoload()自动加载未定义类的实现代码
2013/02/06 PHP
php事务处理实例详解
2014/07/11 PHP
合并ThinkPHP配置文件以消除代码冗余的实现方法
2014/07/22 PHP
PHP实现页面静态化的超简单方法
2016/09/06 PHP
ext实现完整的登录代码
2008/08/08 Javascript
JS实现可改变列宽的table实例
2013/07/02 Javascript
JavaScript调用ajax获取文本文件内容实现代码
2014/03/28 Javascript
用javascript对一个json数组深度赋值示例
2014/07/27 Javascript
jQuery实现为图片添加镜头放大效果的方法
2015/06/25 Javascript
javascript动态生成树形菜单的方法
2015/11/14 Javascript
RequireJS使用注意细节
2016/05/15 Javascript
深入理解JavaScript中的对象复制(Object Clone)
2016/05/18 Javascript
百度地图API之百度地图退拽标记点获取经纬度的实现代码
2017/01/12 Javascript
JS实现队列的先进先出功能示例
2017/05/10 Javascript
详解axios 全攻略之基本介绍与使用(GET 与 POST)
2017/09/15 Javascript
vue获取当前激活路由的方法
2018/03/17 Javascript
vue组件表单数据回显验证及提交的实例代码
2018/08/30 Javascript
详解使用React.memo()来优化函数组件的性能
2019/03/19 Javascript
Vue项目中ESlint规范示例代码
2019/07/04 Javascript
Python字符串转换成浮点数函数分享
2015/07/24 Python
Python的IDEL增加清屏功能实例
2017/06/19 Python
用pandas按列合并两个文件的实例
2018/04/12 Python
Django密码存储策略分析
2020/01/09 Python
django2.2 和 PyMySQL版本兼容问题
2020/02/17 Python
keras输出预测值和真实值方式
2020/06/27 Python
Anaconda使用IDLE的实现示例
2020/09/23 Python
给导游的表扬信
2014/01/10 职场文书
十八届三中全会个人学习材料
2014/02/13 职场文书
银行反四风对照检查材料
2014/09/29 职场文书
个人学习群众路线心得体会
2014/11/05 职场文书
电气工程师岗位职责
2015/02/12 职场文书
民事申诉状范本
2015/05/20 职场文书
高中英语教学反思范文
2016/03/02 职场文书