- 分页组件的基本使用
- 一: element组件库查找 - pagination
- 二: 基本使用:
- 三. 分页组件以及它的事件:
- 事件2: 点击切换页码
- 四: 删除的分页异常处理
- 五: 添加时页面跳转不正确
- 1. 问题:
- 2.分析:
- 3.思路:
- a) 先计算出表格中的最大页码,,然后再计算出表格的最后一页有没有满
- b) 在判断的时候,如最后一页是满的,就让当前页数等于最大页数并且+1 , 如果当前页数不满,就只
- 用让当前页数等于最大页数就行了
- 1. 计算属性
- 2.修改doAdd()这个请求
- 3.在分页中
- 即使上面做了处理,添加完以后就会跳转到最后一页,,但是页码的高亮还是停留在原来位置,
- 这个时候就需要加下面这个属性了,这个属性是页码高亮
- :current-page=”curPage” 这个属性是官网上提供的,为什么要在data中定义curPage呢?
- 是因为官网上说了,,要求是Number类型的,,本应该直接绑定pageParams.page的,但是他是字符串,所
- 以在获取角色列表的时候,就需要把page赋值给curPage这个变量,然后在事件中绑定这个curPage
- 六: 解决分页序号不连续的bug
- 2. 解决:
- 3. 代码解决:
分页组件的基本使用
一: element组件库查找 - pagination
二: 基本使用:
<template>
<div>
<el-pagination
:page-size="size" // 每页显示几条 *
:total="1000" // 设置数据的总条数 *
layout="prev, pager, next"
>
</el-pagination>
</div>
</template>
<script>
export default {
data() {
return {
// 这里的数据是根据后端来确定的
total: 0,
page: 1, // 当前在第几页
size: 2 // 每页有多少条数据
}
},
methods: {
// 改变当前页 (会自动传入一个页码,)
pageChange(page) {
console.log(page)
},
}
}
</script>
三. 分页组件以及它的事件:
常见的几种绑定在分页上的:
1. layout中的关键字有自己的含义;
2. total用来设置数据的总条数 :total = total
3. : page-size = xxx 每页显示几条 绑定的是data里面的每页几条的数据
事件1: 改变每页有几条数据 [每页2条,5条,10条]
![image.png](https://cdn.nlark.com/yuque/0/2021/png/21762447/1624898094778-88a5c106-9f16-475d-a9f0-a03a8ea9b3c6.png#clientId=u7fe589ea-7f4b-4&from=paste&height=173&id=ubb5a2242&margin=%5Bobject%20Object%5D&name=image.png&originHeight=173&originWidth=418&originalType=binary&ratio=1&size=10437&status=done&style=none&taskId=u5f73093f-1504-4d0f-8dcd-391dde17f30&width=418)<br /> ![image.png](https://cdn.nlark.com/yuque/0/2021/png/21762447/1624898132181-c4b694a1-cc43-4211-8c20-b6bab93a1e4f.png#clientId=u7fe589ea-7f4b-4&from=paste&height=103&id=u4a59f5a3&margin=%5Bobject%20Object%5D&name=image.png&originHeight=103&originWidth=618&originalType=binary&ratio=1&size=10841&status=done&style=none&taskId=u575f1678-418a-41e5-aae0-f636ad21969&width=618)
事件2: 点击切换页码
分析思路:
![image.png](https://cdn.nlark.com/yuque/0/2021/png/21762447/1624900197214-c0bf0c28-9f79-43ee-9d1e-53c3eae52f04.png#clientId=u7fe589ea-7f4b-4&from=paste&height=47&id=ue5681d21&margin=%5Bobject%20Object%5D&name=image.png&originHeight=47&originWidth=276&originalType=binary&ratio=1&size=4174&status=done&style=none&taskId=u85485eee-1b26-44f3-8528-c26a712ada8&width=276)<br /> ![image.png](https://cdn.nlark.com/yuque/0/2021/png/21762447/1624900204553-7a421796-1373-4ba3-99d0-adf59bbbbad4.png#clientId=u7fe589ea-7f4b-4&from=paste&height=280&id=uea0e0718&margin=%5Bobject%20Object%5D&name=image.png&originHeight=280&originWidth=331&originalType=binary&ratio=1&size=40711&status=done&style=none&taskId=ub357973a-d542-4b6a-8288-e1944215d3b&width=331)
自动接收当前的页码(也就是说 当用户切换了页码,会自动跳转到当前页,)
1.分页上绑定
![image.png](https://cdn.nlark.com/yuque/0/2021/png/21762447/1624898717332-53e8c932-8bda-476e-ac09-7b15a4acebd5.png#clientId=u7fe589ea-7f4b-4&from=paste&height=174&id=ub02e4a0b&margin=%5Bobject%20Object%5D&name=image.png&originHeight=174&originWidth=393&originalType=binary&ratio=1&size=10153&status=done&style=none&taskId=u372ec4e2-cb6f-428c-9ab6-700e178bd71&width=393)
2.在method里面写事件
![image.png](https://cdn.nlark.com/yuque/0/2021/png/21762447/1624898726135-0388dae7-3526-4149-a72c-0fc57feda1de.png#clientId=u7fe589ea-7f4b-4&from=paste&height=102&id=ue88f0da0&margin=%5Bobject%20Object%5D&name=image.png&originHeight=102&originWidth=216&originalType=binary&ratio=1&size=4577&status=done&style=none&taskId=u28569d61-c1d2-436e-8670-86112154c43&width=216)
3.切换页码的运行逻辑
![image.png](https://cdn.nlark.com/yuque/0/2021/png/21762447/1624899743090-f1764686-674e-4958-9b6b-c2bfac67e8bc.png#clientId=u7fe589ea-7f4b-4&from=paste&height=397&id=ud251a1a9&margin=%5Bobject%20Object%5D&name=image.png&originHeight=397&originWidth=601&originalType=binary&ratio=1&size=107209&status=done&style=none&taskId=ud09cface-a30f-4d97-b67f-d0673e880d5&width=601)<br />
四: 删除的分页异常处理
1. 问题所在:
如果删除最后一页的最一条数据之后,页面会显示不正常
2.原因:
如果删除第最后一页(假设是第4页)的最一条数据之后,再发请求,还是求的第4页,
而此时,后端已经求不到第4 页的数据了(被删除了)。
3.思路
在删除成功之,去检测一下,是否当前删除的是当前页最后一条数据,如果是,就把页
码-1,再发请求
1.封装删除api
2.提示是否确定删除
3.重发请求
4.步骤:
data中定义的 :
![image.png](https://cdn.nlark.com/yuque/0/2021/png/21762447/1624902517580-94376443-a39a-4a41-9020-284baf9eadb2.png#clientId=u7fe589ea-7f4b-4&from=paste&height=97&id=uf8fadf60&margin=%5Bobject%20Object%5D&name=image.png&originHeight=97&originWidth=331&originalType=binary&ratio=1&size=4895&status=done&style=none&taskId=ucdef10d4-f39e-4fb4-a721-20fffe628a2&width=331)
弹出确定删除吗?
![image.png](https://cdn.nlark.com/yuque/0/2021/png/21762447/1624902619310-0cc627e5-b8d6-47e5-bca8-771a8e57ed96.png#clientId=u7fe589ea-7f4b-4&from=paste&height=316&id=u34b3d12b&margin=%5Bobject%20Object%5D&name=image.png&originHeight=316&originWidth=269&originalType=binary&ratio=1&size=14902&status=done&style=none&taskId=u102f8e88-a683-4721-9e87-5d9ceb5813e&width=269)
删除请求 (删除异常处理!!!!!!!)
![image.png](https://cdn.nlark.com/yuque/0/2021/png/21762447/1624902645340-8db71aa9-4967-4070-9df3-b26028e2ed9d.png#clientId=u7fe589ea-7f4b-4&from=paste&height=368&id=ua52bcdf7&margin=%5Bobject%20Object%5D&name=image.png&originHeight=368&originWidth=319&originalType=binary&ratio=1&size=19940&status=done&style=none&taskId=u99805021-525b-43a6-9c43-ecf101b45ab&width=319)
五: 添加时页面跳转不正确
1. 问题:
比如我在第3页添加角色,然后我设置的又是每页两条数据,按理来说我添加好了就应该跳到最
后一页去,但是我还是在第3页
2.分析:
添加完数据以后,若是最后一页没有满,就不会跳到下一页,但是如果最后一页满了,就跳到下一页
3.思路:
a) 先计算出表格中的最大页码,,然后再计算出表格的最后一页有没有满
b) 在判断的时候,如最后一页是满的,就让当前页数等于最大页数并且+1 , 如果当前页数不满,就只
用让当前页数等于最大页数就行了
1. 计算属性
computed: {
// 表格中最大的页码
maxNum() {
return Math.ceil(this.total / this.pageParams.pageSize) // pageSize根据data中定义的
},
// 最后一页是不是满的
isLastPageFulled: function() {
return this.total % this.pageParams.pageSize === 0
}
},
2.修改doAdd()这个请求
async doAdd() {
try {
// 1. 调用接口
const res = await addRole(this.form)
// 2. 关闭弹层
this.showDialog = false
// if(表格的最后一页是满) {
// 想查看最新添加的数据,要跳到最大页码的下一页
// }
if (this.isLastPageFulled) {
this.pageParams.page = this.maxNum + 1
} else {
// 想查看最新添加的数据,要跳到最大页码
this.pageParams.page = this.maxNum
}
// if (this.isLastPage && this.roles.length === this.pageParams.pageSize) {
// this.pageParams.page++
// // 页码++
// }
// 3. 重发请求
this.loadRoles()
console.log(res)
} catch (err) {
console.log(err)
}
},
3.在分页中
即使上面做了处理,添加完以后就会跳转到最后一页,,但是页码的高亮还是停留在原来位置,
这个时候就需要加下面这个属性了,这个属性是页码高亮
:current-page=”curPage” 这个属性是官网上提供的,为什么要在data中定义curPage呢?
是因为官网上说了,,要求是Number类型的,,本应该直接绑定pageParams.page的,但是他是字符串,所
以在获取角色列表的时候,就需要把page赋值给curPage这个变量,然后在事件中绑定这个curPage
六: 解决分页序号不连续的bug
1. bug:
就是页数不都是12345…这样连续的吗? 但是这个bug就是如果一页只有3条,翻到下一页就应
该是456,但是下一页又从123开始了,
2. 解决:
公式:
![image.png](https://cdn.nlark.com/yuque/0/2021/png/21762447/1624976513043-cb1f663b-75f4-49cb-b151-3ee5184f4736.png#clientId=udc01f463-a11c-4&from=paste&height=159&id=u0b2a23c8&margin=%5Bobject%20Object%5D&name=image.png&originHeight=159&originWidth=495&originalType=binary&ratio=1&size=27321&status=done&style=none&taskId=uc199d6a0-02b5-46f9-b422-e8e40c8fc68&width=495)
3. 代码解决:
:index="indexMethod" // 在分页上面加
indexMethod(index) {
// (0 + 1) + (2 - 1 )* 2 == 3
return index = (index + 1) + (this.pageParams.page - 1) * this.pageParams.pagesize
},
// pageParams.page 和 pageParams.pagesize
// 是data中定义的(一个是当前的页码,一个是每页有几条)