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 RegExp方法获取地址栏参数(面向对象)
Mar 10 Javascript
js日期时间补零的小例子
Mar 05 Javascript
JavaScript字符串对象charAt方法入门实例(用于取得指定位置的字符)
Oct 17 Javascript
Vue.js:使用Vue-Router 2实现路由功能介绍
Feb 22 Javascript
关于vue的语法规则检测报错问题的解决
May 21 Javascript
vue项目打包后打开页面空白解决办法
Jun 29 Javascript
老生常谈JavaScript获取CSS样式的方法(兼容各浏览器)
Sep 19 Javascript
微信小程序云开发实现云数据库读写权限
May 17 Javascript
vue相关配置文件详解及多环境配置详细步骤
May 19 Javascript
vue.js 输入框输入值自动过滤特殊字符替换中问标点操作
Aug 31 Javascript
详解 javascript对象创建模式
Oct 30 Javascript
vue-cli4.0多环境配置变量与模式详解
Dec 30 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
Smarty中常用变量操作符汇总
2014/10/27 PHP
PHP滚动日志的代码实现
2015/06/10 PHP
mysql_escape_string()函数用法分析
2016/04/25 PHP
jquery 插件 人性化的消息显示
2008/01/21 Javascript
JS与框架页的操作代码
2010/01/17 Javascript
JavaScript-RegExp对象只能使用一次问题解决方法
2014/06/23 Javascript
JS基于Ajax实现的网页Loading效果代码
2015/10/27 Javascript
EasyUi中的Combogrid 实现分页和动态搜索远程数据
2016/04/01 Javascript
Bootstrap3制作自己的导航栏
2016/05/12 Javascript
详解vue axios中文文档
2017/09/12 Javascript
纯html+css+javascript实现楼层跳跃式的页面布局(实例代码)
2017/10/25 Javascript
详解Vue CLI 3.0脚手架如何mock数据
2018/11/23 Javascript
BootStrap table实现表格行拖拽效果
2018/12/01 Javascript
Element-ui DatePicker显示周数的方法示例
2019/07/19 Javascript
jQuery操作元素追加内容示例
2020/01/10 jQuery
JavaScript设计模式--桥梁模式引入操作实例分析
2020/05/23 Javascript
jQuery实现评论模块
2020/08/19 jQuery
Windows下Eclipse+PyDev配置Python+PyQt4开发环境
2016/05/17 Python
Python如何实现MySQL实例初始化详解
2017/11/06 Python
numpy使用技巧之数组过滤实例代码
2018/02/03 Python
python调用tcpdump抓包过滤的方法
2018/07/18 Python
python 使用sys.stdin和fileinput读入标准输入的方法
2018/10/17 Python
FFrpc python客户端lib使用解析
2019/08/24 Python
Python字符串和正则表达式中的反斜杠('\')问题详解
2019/09/03 Python
python GUI库图形界面开发之PyQt5信号与槽机制、自定义信号基础介绍
2020/02/25 Python
自定义Django默认的sitemap站点地图样式
2020/03/04 Python
Python Opencv 通过轨迹(跟踪)栏实现更改整张图像的背景颜色
2020/03/09 Python
浅析python 动态库m.so.1.0错误问题
2020/05/09 Python
keras.layer.input()用法说明
2020/06/16 Python
Belstaff英国官方在线商店:Belstaff.co.uk
2021/02/09 全球购物
委托证明的格式
2014/01/10 职场文书
区域销售经理岗位职责
2015/04/02 职场文书
公司职员入党自传书
2015/06/26 职场文书
团委副书记工作总结
2015/08/14 职场文书
工伤调解协议书
2016/03/21 职场文书
pycharm无法导入lxml的解决办法
2021/03/31 Python