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 相关文章推荐
让iframe框架网页在任何浏览器下自动伸缩
Aug 18 Javascript
js中的escape及unescape函数的php实现代码
Sep 04 Javascript
jQuery表格行换色的三种实现方法
Jun 27 Javascript
JS数组的遍历方式for循环与for...in
Jul 31 Javascript
jQuery实现拖拽页面元素并将其保存到cookie的方法
Jun 12 Javascript
Angular 4 指令快速入门教程
Jun 07 Javascript
20170918 前端开发周报之JS前端开发必看
Sep 18 Javascript
浅谈Vue组件及组件的注册方法
Aug 24 Javascript
js监听html页面的上下滚动事件方法
Sep 11 Javascript
Electron 调用命令行(cmd)
Sep 23 Javascript
详解Vue 单文件组件的三种写法
Feb 19 Javascript
详解基于element的区间选择组件校验(交易金额)
Jan 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
用Socket发送电子邮件(利用需要验证的SMTP服务器)
2006/10/09 PHP
ThinkPHP与PHPExcel冲突解决方法
2011/08/08 PHP
整理的一些实用WordPress后台MySQL操作命令
2013/01/07 PHP
PHP字符串中特殊符号的过滤方法介绍
2014/02/18 PHP
php获取网页请求状态程序示例
2014/06/17 PHP
PHP实现WebService的简单示例和实现步骤
2015/03/27 PHP
PHP开发api接口安全验证操作实例详解
2020/03/26 PHP
jquery DOM操作 基于命令改变页面
2010/05/06 Javascript
javascript使用onclick事件改变选中行的颜色
2013/12/30 Javascript
理解 JavaScript Scoping &amp; Hoisting(二)
2015/11/18 Javascript
JS阻止事件冒泡行为和闭包的方法
2016/06/16 Javascript
javascript中的后退和刷新实现方法
2016/11/10 Javascript
JS简单实现表格排序功能示例
2016/12/20 Javascript
JS变量及其作用域
2017/03/29 Javascript
解决webpack打包速度慢的解决办法汇总
2017/07/06 Javascript
Vue入门之animate过渡动画效果
2018/04/08 Javascript
基于webpack4.X从零搭建React脚手架的方法步骤
2018/12/23 Javascript
node实现mock-plugin中间件的方法
2019/12/25 Javascript
Vue中多元素过渡特效的解决方案
2020/02/05 Javascript
vue实现公告栏文字上下滚动效果的示例代码
2020/06/16 Javascript
[03:21]【TI9纪实】Old Boys
2019/08/23 DOTA
python进阶教程之函数对象(函数也是对象)
2014/08/30 Python
新手常见6种的python报错及解决方法
2018/03/09 Python
详解windows python3.7安装numpy问题的解决方法
2018/08/13 Python
numpy linalg模块的具体使用方法
2019/05/26 Python
Django时区详解
2019/07/24 Python
Python networkx包的实现
2020/02/14 Python
Python实现队列的方法示例小结【数组,链表】
2020/02/22 Python
Python DES加密实现原理及实例解析
2020/07/17 Python
世界上最好的足球商店:Unisport
2019/03/02 全球购物
学前教育教师求职自荐信
2013/09/22 职场文书
信息技术专业个人自我评价
2013/12/11 职场文书
运动会入场词200字
2014/02/15 职场文书
工伤事故赔偿协议书范文
2014/09/24 职场文书
2014年图书馆工作总结
2014/11/25 职场文书
小学一年级学生评语大全
2014/12/25 职场文书