解决element 分页组件,搜索过后current-page 绑定的数据变了,但是页面当前页码并没有变的问题

前言

上一篇写前台解决分页问题的时候没有这个问题,但是在实际项目后台中有遇到过,所以在这里专门说一下,如果参考前台分页出现这种问题了,也可以使用这种方法!
bug:vue和element实现的后台分页,当前是第二页,点击搜索,强制设置current-page为1,但是当前页还是第二页没有改变。

解决方法

如何使用分页就不说了,可以参考上一篇的前台解决分页

  • 页面 el-pagination v-if="pageshow"
 <el-pagination v-if="pageshow" @size-change="handleSizeChange" @current-change="handleCurrentChange"
            :current-page="page" :page-sizes="[1, 2,5, 10]" :page-size="limit"
            layout="total, sizes, prev, pager, next, jumper" :total="total">
        </el-pagination>
  • 操作
    这里element的分页有个bug,就是在搜索过后的当前页数据变化了,原本的分页当前页并不会改变,这就会遇见一个问题,首次展示停留在第5页,搜索过后的数据并没有5页,不论前台分页或后台分页,页面都会展示:暂无数据! 但其实是有数据的,只是额没有第五页的数据。所以在搜索的时候将当前页设置为1。
  • 使用v-if绑定数据,当每次搜索的时候就注销掉前一个分页Dom,画面刷新完毕后,渲染一个同样的分页,重新渲染必须放到$nextTick中,这样在使用分页就不会出现问题了。
  • search是一个方法在methods中,调用的时候@click="search"绑定到 搜索按钮上 就可以了
            search() {
                this.page = 1
                this.pageshow = false
                this.getList()
                this.$nextTick(() => {
                    this.pageshow = true
                })
            }

如果本文对你有帮助的话,请不要忘记给我点赞打call哦~o( ̄▽ ̄)do
有问题留言 over~

  • 29
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 14
    评论
### 回答1: element-plus分页组件可以通过v-for指令来渲染数据,具体操作如下: 1. 在模板中使用el-pagination组件,并相应的属性和事件。 2. 在data中义一个数组,存储需要渲染的数据。 3. 在mounted钩子函数中,通过ajax请求获取数据,并将数据存储到data中义的数组中。 4. 在el-pagination的change事件中,根据当前页码和每页显示的数据条数,计算出需要渲染的数据,并更新data中的数组。 5. 在模板中使用v-for指令,将data中的数组渲染到页面上。 示例代码如下: <template> <div> <el-pagination :total="total" :page-size="pageSize" @current-change="handleCurrentChange" ></el-pagination> <ul> <li v-for="(item, index) in dataList" :key="index">{{ item }}</li> </ul> </div> </template> <script> export default { data() { return { total: 100, pageSize: 10, dataList: [] }; }, mounted() { // ajax请求获取数据 // 假设返回的数据为data this.dataList = data; }, methods: { handleCurrentChange(currentPage) { // 根据当前页码和每页显示的数据条数,计算出需要渲染的数据 const start = (currentPage - 1) * this.pageSize; const end = currentPage * this.pageSize; this.dataList = data.slice(start, end); } } }; </script> ### 回答2: element-plus中的分页组件可以与v-for指令配合使用,实现对数据的分页展示。 首先,在数据集合上应用v-for指令进行遍历渲染,将数据展示在页面上。如下所示: ```html <template> <div> <ul> <li v-for="item in dataList" :key="item.id">{{ item.name }}</li> </ul> <el-pagination :page-sizes="[10, 20, 30, 40]" :page-size="pageSize" :total="total" :current-page.sync="currentPage" @current-change="handleCurrentChange" layout="total, sizes, prev, pager, next, jumper" ></el-pagination> </div> </template> ``` 上述代码中,使用v-for指令遍历dataList数组,将数组中的每个对象渲染为列表项。其中,item表示数组中的每个元素。 接下来,使用element-plus的分页组件el-pagination进行分页展示。通过设置相应的属性,实现与数据集合的和相应的分页功能。上述代码中的el-pagination组件的属性解释如下: - page-sizes: 可选的每页显示条数,以数组形式提供。 - page-size: 默认的每页显示条数,可以使用v-model进行双向。 - total: 数据总数。 - current-page: 当前页码,可以使用v-model进行双向。 - @current-change: 页面切换时的回调函数,可以在该函数内处理相应的数据请求或其他操作。 - layout: 分页组件的布局方式,根据实际需要进行设置。 最后,在handleCurrentChange方法中可以获取到当前页码,可以根据该页码进行相应的数据请求或其他操作,以实现列表的动态化。 通过以上操作,我们就可以使用element-plus的分页组件el-pagination与v-for指令配合使用,实现对数据的分页展示。 ### 回答3: Element Plus是一款基于Vue.js的UI组件库,提供了丰富的组件和功能,其中包括分页组件。要搭配v-for使用Element Plus分页组件,需要进行一些步骤: 1. 首先,在Vue组件中导入element-plus的分页组件和其他必要的组件。 ```javascript import {ElPagination, ...} from 'element-plus'; ``` 2. 在Vue组件的template中,添加分页组件的使用代码。 ```html <el-pagination layout="total, prev, pager, next, sizes" :total="totalItems" :current-page="currentPage" :page-sizes="[10, 20, 30, 40]" :page-size="pageSize" @current-change="handleCurrentChange" @size-change="handleSizeChange" /> ``` 3. 在Vue组件的script中,设置相关的数据和方法。 ```javascript data() { return { totalItems: 100, // 总条数 currentPage: 1, // 当前页码 pageSize: 10, // 每页显示条数 }; }, methods: { handleCurrentChange(val) { // 当前页码时触发 this.currentPage = val; // 执行数据获取或其他操作 }, handleSizeChange(val) { // 每页显示条数改时触发 this.pageSize = val; // 执行数据获取或其他操作 }, }, ``` 4. 结合v-for指令,使用分页组件进行数据展示。 ```html <template v-for="(item, index) in list"> <!-- 根据item的值展示内容 --> </template> ``` 以上就是使用Element Plus分页组件搭配v-for的简单步骤。通过分页组件的setCurrentPage()和setPageSize()方法,可以动态改分页参数并触发相应的数据获取和展示操作。记得通过适当的样式或其他操作,将分页组件和v-for生成的多个元素进行关联。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值