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

情景:
1 就是在搜索过后的当前页数据变化了,原本的分页当前页并不会改变,这就会遇见一个问题,首次展示停留在第5页,搜索过后的数据并没有5页,不论前台分页或后台分页,页面都会展示:暂无数据! 但其实是有数据的,只是额没有第五页的数据。
2 使用v-if绑定数据,当每次搜索的时候就注销掉前一个分页Dom,画面刷新完毕后,渲染一个同样的分页,重新渲染必须放到$nextTick中,这样在使用分页就不会出现问题了。

<el-pagination 
	 v-if="pageshow" 
	 @current-change="handleCurrentChange"
     :current-page="page" 
     :page-size="curPageSize"
     layout=" prev, pager,next" 
     :total="total">
        </el-pagination>
search (page) {
	this.page = page
	this.pageShow = false
	this.nextTick(() => {
		this.pageShow = true 
	})
}
### 回答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生成的多个元素进行关联。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值