使用Vue做双向绑定的时候,可能经常会用到分页功能

接下来我们来封装一个分页组件
先定义样式文件 pagination.css
ul, li {
margin: 0px;
padding: 0px;
}
.page-bar {
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.page-button-disabled {
color:#ddd !important;
}
.page-bar li {
list-style: none;
display: inline-block;
}
.page-bar li:first-child > a {
margin-left: 0px;
}
.page-bar a {
border: 1px solid #ddd;
text-decoration: none;
position: relative;
float: left;
padding: 6px 12px;
margin-left: -1px;
line-height: 1.42857143;
color: #337ab7;
cursor: pointer;
}
.page-bar a:hover {
background-color: #eee;
}
.page-bar .active a {
color: #fff;
cursor: default;
background-color: #337ab7;
border-color: #337ab7;
}
.page-bar i {
font-style: normal;
color: #d44950;
margin: 0px 4px;
font-size: 12px;
}
js文件 pagination.js
(function (vue) {
// html模板信息
var template = '<div class="page-bar"> \
<ul> \
<li><a class="{{ setButtonClass(0) }}" v-on:click="prvePage(cur)">上一页</a></li> \
<li v-for="index in indexs" v-bind:class="{ active: cur == index }"> \
<a v-on:click="btnClick(index)">{{ index < 1 ? "..." : index }}</a> \
</li> \
<li><a class="{{ setButtonClass(1) }}" v-on:click="nextPage(cur)">下一页</a></li> \
</ul> \
</div>'
var pagination = vue.extend({
template: template,
props: ['cur', 'all'],
computed: {
indexs: function () {
var left = 1
var right = this.all
var ar = []
if (this.all >= 11) {
if (this.cur > 5 && this.cur < this.all - 4) {
left = this.cur - 5
right = this.cur + 4
} else {
if (this.cur <= 5) {
left = 1
right = 10
} else {
right = this.all
left = this.all - 9
}
}
}
while (left <= right) {
ar.push(left)
left++
}
if (ar[0] > 1) {
ar[0] = 1;
ar[1] = -1;
}
if (ar[ar.length - 1] < this.all) {
ar[ar.length - 1] = this.all;
ar[ar.length - 2] = 0;
}
return ar
}
},
methods: {
// 页码点击事件
btnClick: function (data) {
if (data < 1) return;
if (data != this.cur) {
this.cur = data
this.$dispatch('btn-click', data)
}
},
// 下一页
nextPage: function (data) {
if (this.cur >= this.all) return;
this.btnClick(this.cur + 1);
},
// 上一页
prvePage: function (data) {
if (this.cur <= 1) return;
this.btnClick(this.cur - 1);
},
// 设置按钮禁用样式
setButtonClass: function (isNextButton) {
if (isNextButton) {
return this.cur >= this.all ? "page-button-disabled" : ""
}
else {
return this.cur <= 1 ? "page-button-disabled" : ""
}
}
}
})
vue.Pagination = pagination
})(Vue)
pagination分页组件就封装好了,需要使用的时候,引入以上两个文件即可
接下来我们测试下效果
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<title></title>
<script src="vue.js"></script>
<link href="pagination.css" rel="stylesheet" />
<script src="pagination.js"></script>
</head>
<body>
<div id="app">
<vue-pagination :cur.sync="cur" :all.sync="all" v-on:btn-click="listen"></vue-pagination>
<p>{{msg}}</p>
</div>
<script type="text/javascript">
var app = new Vue({
el: '#app',
data: {
// 当前页码
cur: 1,
// 总页数
all: 100,
msg: ''
},
components: {
// 引用组件
'vue-pagination': Vue.Pagination
},
methods: {
listen: function (data) {
// 翻页会触发此事件
this.msg = '当前页码:' + data
}
}
})
</script>
</body>
</html>
最终效果
页码切换事件在listen中处理即可
点击此处下载源码:源码下载地址
以上所述是小编给大家介绍的基于Vue如何封装分页组件,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
# vue如何封装组件
# vue
# 组件
# Vue分页组件的封装方法
# vue3封装自己的分页组件
# vue3.0手动封装分页组件的方法
# vue+iview分页组件的封装
# Vue开发之封装分页组件与使用示例
# vue 基于element-ui 分页组件封装的实例代码
# Vue分页组件实现过程详解
# 分页
# 下一页
# 上一页
# 小编
# 好了
# 在此
# 下载地址
# 给大家
# 点击此处
# 经常会
# 所述
# 绑定
# 翻页
# 给我留言
# 感谢大家
# 疑问请
# 有任何
# float
# relative
# position
相关文章:
建站之星代理费用多少?最新价格详情介绍
长沙企业网站制作哪家好,长沙水业集团官方网站?
家具网站制作软件,家具厂怎么跑业务?
Android自定义控件实现温度旋转按钮效果
,网页ppt怎么弄成自己的ppt?
如何解决ASP生成WAP建站中文乱码问题?
攀枝花网站建设,攀枝花营业执照网上怎么年审?
广东企业建站网站优化与SEO营销核心策略指南
网站制作的方法有哪些,如何将自己制作的网站发布到网上?
长春网站建设制作公司,长春的网络公司怎么样主要是能做网站的?
如何在Golang中引入测试模块_Golang测试包导入与使用实践
北京营销型网站制作公司,可以用python做一个营销推广网站吗?
如何注册花生壳免费域名并搭建个人网站?
广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?
学校免费自助建站系统:智能生成+拖拽设计+多端适配
建站之星2.7模板快速切换与批量管理功能操作指南
上海网站制作网页,上海本地的生活网站有哪些?最好包括生活的各个方面的?
网站插件制作软件免费下载,网页视频怎么下到本地插件?
高端建站如何打造兼具美学与转化的品牌官网?
如何在VPS电脑上快速搭建网站?
SQL查询语句优化的实用方法总结
如何配置支付宝与微信支付功能?
如何在景安云服务器上绑定域名并配置虚拟主机?
江苏网站制作公司有哪些,江苏书法考级官方网站?
Python多线程使用规范_线程安全解析【教程】
官网自助建站平台指南:在线制作、快速建站与模板选择全解析
用v-html解决Vue.js渲染中html标签不被解析的问题
建站之星好吗?新手能否轻松上手建站?
浅谈Javascript中的Label语句
如何通过虚拟主机快速搭建个人网站?
制作网站的软件免费下载,免费制作app哪个平台好?
建站主机类型有哪些?如何正确选型
宝华建站服务条款解析:五站合一功能与SEO优化设置指南
广东专业制作网站有哪些,广东省能源集团有限公司官网?
魔毅自助建站系统:模板定制与SEO优化一键生成指南
香港服务器网站推广:SEO优化与外贸独立站搭建策略
在线制作视频网站免费,都有哪些好的动漫网站?
jQuery 常见小例汇总
XML的“混合内容”是什么 怎么用DTD或XSD定义
如何通过可视化优化提升建站效果?
高性能网站服务器配置指南:安全稳定与高效建站核心方案
零基础网站服务器架设实战:轻量应用与域名解析配置指南
国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?
高配服务器限时抢购:企业级配置与回收服务一站式优惠方案
浅析上传头像示例及其注意事项
制作网站的软件下载免费,今日头条开宝箱老是需要下载怎么回事?
,sp开头的版面叫什么?
建站之星安装后界面空白如何解决?
如何快速完成中国万网建站详细流程?
如何高效完成自助建站业务培训?
*请认真填写需求信息,我们会在24小时内与您取得联系。