基于Vue2.0的分页组件

 更新时间:2021年09月26日 11:22:33   作者:sweetsuzyhyf  
这篇文章主要为大家详细介绍了基于Vue2.0的分页组件的相关资料,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了Vue2.0分页组件的具体实现代码,供大家参考,具体内容如下

整个示例打包了,有需要的可以下载,有不对的地方欢迎指出:vue分页组件

组件部分代码:

Vue.component('zpagenav', { 
 template: `<nav class="zpagenav">` + 
     `<ul class="page-ul">` + 
      `<li v-bind:key="index" v-for="(item,index) in pageList" v-bind:class ="item.class" @click.stop="setPage(item)" v-html="item.html">` + 
      `</li>` + 
     `</ul>` + 
     `<span class="total">共 {{total}} 条</span>` + 
    `</nav>`, 
 props: { 
  prevHtml: String, 
  nextHtml: String, 
  page: Number, 
  total: Number, 
  pageSize: Number, 
  maxPage: Number 
 }, 
 computed: { 
  pageList: function () { 
   var _this = this, pageList = []; 
   let pageCount = Math.ceil(_this.total / _this.pageSize); 
   let page = _this.page; 
   let prevHtml = _this.prevHtml ? _this.prevHtml : '<'; 
   let nextHtml = _this.nextHtml ? _this.nextHtml : '>'; 
   let maxPage = _this.maxPage ? _this.maxPage : 9; 
 
   let hasPrev = page > 1; 
   let hasNext = page < pageCount; 
 
   //上一页 
   pageList.push({ 
    class: hasPrev ? '' : 'disabled', 
    page: hasPrev ? page - 1 : page, 
    html: prevHtml 
   }); 
 
   //首页 
   pageList.push({ 
    class: page == 1 ? 'active' : '', 
    page: 1, 
    html: 1 
   }); 
 
   var p0 = Math.floor(maxPage / 2); 
   var p1 = 1 + 2 + p0; //首页+省略至少2个页码+中间页面数的一半 
 
   var start, end; 
   if (page >= p1) { 
    start = page - p0; 
    //前置省略号 
    pageList.push({ 
     class: 'dot', 
     page: page, 
     html: '...' 
    }); 
   } else { 
    start = 2; 
   } 
 
   var p2 = page + p0; 
   if (p2 < pageCount) { 
    end = p2; 
   } else { 
    end = pageCount - 1; 
   } 
 
 
   //页码列表 
   for (let i = start; i <= end; i++) { 
    pageList.push({ 
     class: page == i ? 'active' : '', 
     page: i, 
     html: i 
    }); 
   } 
 
 
   if (end < pageCount - 1) { 
    //后置省略号 
    pageList.push({ 
     class: 'dot', 
     page: page, 
     html: '...' 
    }); 
   } 
 
 
   //尾页 
   if (pageCount > 1) { 
    pageList.push({ 
     class: page == pageCount ? 'active' : '', 
     page: pageCount, 
     html: pageCount 
    }); 
   } 
 
   //下一页 
   pageList.push({ 
    class: hasNext ? '' : 'disabled', 
    page: hasNext ? page + 1 : page, 
    html: nextHtml 
   }); 
 
   return pageList; 
  } 
 }, 
 methods: { 
  setPage: function (item) { 
   if (item.class == '') { 
    this.$emit('pagehandler', item.page); 
   } 
  } 
 } 
}); 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 一文详解Pinia和Vuex与两个Vue状态管理模式

    一文详解Pinia和Vuex与两个Vue状态管理模式

    这篇文章主要介绍了一文详解Pinia和Vuex与两个Vue状态管理模式,Pinia和Vuex一样都是是vue的全局状态管理器。其实Pinia就是Vuex5,只不过为了尊重原作者的贡献就沿用了这个看起来很甜的名字Pinia
    2022-08-08
  • Vue.js仿Metronic高级表格(二)数据渲染

    Vue.js仿Metronic高级表格(二)数据渲染

    这篇文章主要为大家详细介绍了Vue.js仿Metronic高级表格的数据渲染,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • Electron-vue脚手架改造vue项目的方法

    Electron-vue脚手架改造vue项目的方法

    这篇文章主要介绍了Electron-vue脚手架改造vue项目的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-10-10
  • Vue 打包上线后的缓存问题解决

    Vue 打包上线后的缓存问题解决

    在使用vue脚手架搭建前端工程时,经常会遇到打包上线后的缓存问题,许多开发者会直接在index.html中加入类似以下代码来解决缓存问题,本文通过实例代码给大家介绍的非常详细,需要的朋友参考下吧
    2023-11-11
  • vue实现验证码输入框组件

    vue实现验证码输入框组件

    最近做项目遇到这样的需求要求输入4位或6位短信验证码,输入完成后收起键盘。实现步骤大家参考下本文
    2017-12-12
  • vue中常见的问题及解决方法总结(推荐)

    vue中常见的问题及解决方法总结(推荐)

    这篇文章主要给大家介绍了关于vue中常见的问题及解决方法的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • 关于vue.js发布后路径引用的问题解决

    关于vue.js发布后路径引用的问题解决

    最近在vue.js项目发布后发现了一个关于路径的问题,发现网上关于这个的资料较少,所以给大家总结下,下面这篇文章主要给大家介绍了如何解决关于vue.js发布后路径引用的问题,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-08-08
  • Vue3中Hooks函数的使用及封装思想详解

    Vue3中Hooks函数的使用及封装思想详解

    Vue 3中的Hooks函数是一种用于在组件中共享可复用逻辑的方式,简单来说,就是将单独功能的js代码抽离出来, 加工成公共函数,从而达到逻辑复用,下面小编就来和大家聊聊Hooks函数的使用及封装思想吧
    2023-06-06
  • vue table直接定位到指定元素的操作代码

    vue table直接定位到指定元素的操作代码

    最近遇到这样的需求点击某一个节点,弹窗,直接定位到点击的节点,高亮并显示数据,下面小编给大家带来了vue table直接定位到指定元素的操作代码,需要的朋友可以参考下
    2022-11-11
  • vue中使用elementUI自定义校验及点击提交不生效问题解决办法

    vue中使用elementUI自定义校验及点击提交不生效问题解决办法

    我们在项目中经常会用到ElementUI的表单验证,下面这篇文章主要给大家介绍了关于vue中使用elementUI自定义校验及点击提交不生效问题解决的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-12-12

最新评论