分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 运营维护

采用Vue2.0开发的分页js组件

发布时间:2023-09-06 01:25责任编辑:郭大石关键词:js组件

2017-11-17 19:14:23

基于jQuery的分页插件相信大家伙已经都用过很多了,今天分享一下基于Vue2.0的分页插件pagination.js

由于项目需求,要求使用 Vue2.0 开发一套有关分页的组件 

这款 pagination.js 组件,可以按照各自需求定制,以下代码可以直接复制引入项目中

// 1、Vue写的分页有两个参数         

// pages:总页数,pageNo:当前页

// 直接上代码,考虑到兼容 IE 等浏览器,其中 template 直接使用字符串拼接方式

 1 /** 2 ?* author: tyd 3 ?* createTime: 2017/11/13 4 ?* title: 分页组件 5 ?*/ 6 var pageComponent = Vue.extend({ 7 ????template: ‘<nav aria-label="Page navigation">‘+ 8 ????????????????????‘<ul class="pagination">‘+ 9 ????????????????????????‘<li :class="{\‘disabled\‘:curPage==1}">‘+10 ???????????????????????????‘<a href="javascript:;" @click="goPage(curPage==1?1:curPage-1)" aria-label="Previous">‘+11 ????????????????????????????????‘<span aria-hidden="true">上一页</span>‘+12 ???????????????????????????‘</a>‘+13 ???????????????????????‘</li>‘+14 ???????????????????????‘<li v-for="page in showPageBtn" :class="{\‘active\‘:page==curPage}">‘+15 ????????????????????????????‘<a href="javascript:;" v-if="page" @click="goPage(page)">{{page}}</a>‘+16 ?????????????????????????????‘<a href="javascript:;" v-else>···</a>‘+17 ???????????????????????‘</li>‘+18 ???????????????????????‘<li :class="{\‘disabled\‘:curPage==pages}">‘+19 ???????????????????????????‘<a href="javascript:;" @click="goPage(curPage==pages?pages:curPage+1)" aria-label="Next">‘+20 ???????????????????????????????????‘<span aria-hidden="true">下一页</span>‘+21 ???????????????????????????‘</a>‘+22 ????????????????????????‘</li>‘+23 ????????????????????????‘<li :class="{\‘disabled\‘:pages==pages}">‘+24 ???????????????????????????‘<a href="javascript:void(0);">‘+25 ????????????????????????????????????‘共 ?{{pages}} 页‘+26 ???????????????????????????‘</a>‘+27 ???????????????????????‘</li>‘+28 ???????????????????‘</ul>‘+29 ???????????????‘</nav>‘,30 ????// 用户组件传递数据 ???????????31 ????props: {32 ????????pages: {33 ????????????type: Number,34 ????????????default: 135 ????????},36 ????????current: {37 ????????????type: Number,38 ????????????default: 139 ????????}40 ????},41 ????data:function (){42 ????????return{43 ????????????curPage:144 ????????}45 ????},46 ????computed: {47 ????????// 显示分页按钮48 ????????showPageBtn:function() {49 ????????????let pageNum = this.pages; // 总页数50 ????????????let index = this.curPage; // 当前页51 ????????????let arr = [];52 ????????????if (pageNum <= 6) {53 ????????????????for (let i = 1; i <= pageNum; i++) {54 ????????????????????arr.push(i)55 ????????????????}56 ????????????????return arr57 ????????????}58 ????????????// 对页码显示进行处理,动态展示59 ????????????if (index <= 3) return [1, 2, 3, 4, 0, pageNum];60 ????????????if (index >= pageNum - 1) return [1, 0, pageNum - 3, pageNum - 2, pageNum - 1, pageNum];61 ????????????if (index === 4) return [1, 2, 3, 4, 5, 0, pageNum];62 ????????????if (index === pageNum - 2) return [1, 0, pageNum - 4, pageNum - 3, pageNum - 2, pageNum - 1, pageNum];63 ????????????return [1, 0, index - 2,index - 1, index, index + 1, index + 2, 0, pageNum];64 ????????}65 ????},66 ????methods: {67 ????????goPage:function(page) {68 ????????????if (page != this.curPage) {69 ????????????????console.log(page);70 ????????????????this.curPage = page;71 ????????????????this.$emit(‘navpage‘, this.curPage);72 ????????????}else{73 ????????????????console.log(‘Already in the current page‘);74 ????????????}75 ????????}76 ????}77 });78 Vue.component(‘navigation‘, pageComponent); // 注册组件

// 2、简单的演示 Html

 1 <!DOCTYPE html> 2 <html lang="en"> 3 ????<head> 4 ????????<meta charset="UTF-8"> 5 ????????<title>Vue2.0分页组件</title> 6 ????????<link href="https://cdn.bootcss.com/bootstrap/3.3.4/css/bootstrap.css" rel="stylesheet"> 7 ????????<script src="https://cdn.bootcss.com/vue/2.5.3/vue.js"></script> 8 ????????<!-- 引入外部的 pagination.js 组件即可 --> 9 ????????<script type="text/javascript" src="pagination.js"></script>10 ????</head>11 ????<body>12 ????????<div id="app" class="text-right" style="text-align: center;">13 ????????????<navigation :pages="pages" :current.sync="pageNo" @navpage="pageList"></navigation>14 ????????</div>15 ????????<script type="text/javascript">16 ????????????new Vue({17 ????????????????el: "#app",18 ????????????????data: {19 ????????????????????pageNo: 1,20 ????????????????????pages: 10021 ????????????????},22 ????????????????methods: {23 ????????????????????pageList:function(curPage) {24 ????????????????????????//根据当前页获取数据25 ????????????????????????this.pageNo = curPage;26 ????????????????????????console.log("当前页:" + this.pageNo);27 ????????????????????}28 ????????????????}29 ????????????})30 ????????</script>31 ????</body>32 </html>

 演示:

采用Vue2.0开发的分页js组件

原文地址:http://www.cnblogs.com/sebastian-tyd/p/7853188.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved