Vue分页组件封装的实现是怎样的,代码是什么
Admin 2022-08-13 群英技术资讯 1401 次浏览
这篇文章给大家分享的是“Vue分页组件封装的实现是怎样的,代码是什么”,对大家学习和理解有一定的参考价值和帮助,有这方面学习需要的朋友,接下来就跟随小编一起学习一下吧。这个是基于vue2的分页封装,仿照elementUI而写的组件。
效果如图

话不多说,直接上代码
<template>
<div class="pagination">
<!-- 总页数 -->
<div class="total">共{{ total }}条</div>
<!-- 选择每页的条数 -->
<select name="" id="size_select" v-model="sizes" @change="sizeChange">
<option v-for="item in pageSizes" :key="item" :value="item">
{{ item }}条/页
</option>
</select>
<div class="pagenum">
<!-- 上一页 -->
<el-button
icon="el-icon-arrow-left"
:disabled="backDisabled"
circle
@click="back"
></el-button>
<!-- 页码 -->
<ul>
<li
:class="currentPage == item ? 'active' : ''"
v-for="(item, index) in pagenum"
:key="index"
@click="toPage(item)"
>
{{ item }}
</li>
</ul>
<!-- 下一页 -->
<el-button
icon="el-icon-arrow-right"
:disabled="forwardDisabled"
circle
@click="forward"
></el-button>
</div>
</div>
</template>
<script>
export default {
name: "pagination",
props: {
total: { // 总数
type: null,
required: true,
},
pageSizes: { // 可选择的每页条数
type: Array,
},
pageSize: { // 每页显示的条数
type: Number,
required: true,
},
currentPage: { // 当前页
type: Number,
required: true,
},
},
data() {
return {
sizes: this.pageSize, // 接收props传来的pageSize
nowPage: this.currentPage, // 接收props传来的currentPage
};
},
computed: {
allPage() { // 计算所有的页数
return Math.ceil(this.total / this.pageSize);
},
backDisabled() { // 是否禁用上一页
return this.currentPage == 1;
},
forwardDisabled() { // 是否禁用下一页
return this.currentPage == this.allPage;
},
pagenum() { // 计算显示不同的页
if (this.allPage - this.nowPage > 6) { //
if (this.nowPage > 6) {
return [
1,
"...",
this.nowPage - 2,
this.nowPage - 1,
this.nowPage,
this.nowPage + 1,
this.nowPage + 2,
"...",
this.allPage,
];
} else {
if (this.allPage > 8) {
return [1, 2, 3, 4, 5, 6, "...", this.allPage];
} else {
return this.allPage;
}
}
} else {
if (this.nowPage < 6) {
return this.allPage;
} else {
return [
1,
"...",
this.allPage - 5,
this.allPage - 4,
this.allPage - 3,
this.allPage - 2,
this.allPage - 1,
this.allPage,
];
}
}
},
},
methods: {
sizeChange() { // 每页限制条数改变触发事件
this.$emit("sizeChange", this.sizes);
},
forward() { // 点击下一页
this.$emit("currentChange", (this.nowPage += 1));
},
back() { // 点击上一页
this.$emit("currentChange", (this.nowPage -= 1));
},
toPage(val) { // 点击页数
if (val == "...") {
console.log(2);
} else {
this.nowPage = val;
this.$emit("currentChange", val);
}
},
},
};
</script>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
目录一、安装axios二、配置axios,添加拦截器三、使用axios发送请求附:Vue3 中全局引入 axios总结axios中文网站:axios-http.com/zh/一、安装axiosnpm install axios --save二、配置axios,添加拦截器在src目录下新建一个request文件夹,在里面
这篇文章给大家分享的是有关js实现长图滚动效果的内容,小编觉得挺实用的,在很多常见都能应用到,因此分享给大家做个参考,感兴趣的朋友接下来一起跟随小编看看吧。
本章节讨论使用ES6编码风格到代码中需要注意的点。通过记住这些关键点,可以让我们写出更优美的、可读性更强的JavaScript ES6风格的代码。
目录前言框选的实现Group 类的实现小结前言虽然这两个月基金涨的还行,但是离回本还有一大大大段距离????。今天呢,我们要实现的是 canvas 中物体的框选功能,大概就像下面这个样子:然后话不多说,直接开撸 ✍????框选的实现先来说下拖蓝选区(鼠标拖拽区域)的实现方式吧,仔细观察你会发现选区其实就是个普通矩形,这个区域由鼠标
react link不跳转怎么办?对于出现react router native:link点击不跳转的问题,有一些朋友不知道怎样解决,对此这篇针对下面的示例小编和大家一起来分析解决看看,需要的朋友就继续往下看吧。
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008