使用分页问题:点击第二页然后查询,数据显示为第一页的问题解决

本文主要是介绍使用分页问题:点击第二页然后查询,数据显示为第一页的问题解决,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

使用分页问题:点击第二页然后查询,数据显示为第一页的问题解决

关于分页,这是在工作中接触vue+element由于逻辑混乱导致的,前几天在改系统BUG没来的及整理,今日开始动手整理,因为跨页面较多,可能会有遗漏,后续发现问题会继续补充。

具体问题是,分页后数据共两页,点击第二页查看第二页信息正常,但是如果停留在第二页上去执行查询操作,刷新回来的数据会在第二页显示,经过修改这个问题被解决,但是又出现了新的问题是,查询返回的数据不足一页时,页面显示为第一页,但第二页仍存在。
代码结构如下:

<!--index.vue中html部分-->
<el-popoverplacement="bottom-start"width="800"trigger="click"v-model="isShow"><!--这里的ref用来指向RecordsSearch这个子组件--><RecordsSearch ref="searchChild" :searchList="searchInfo"  :searchPage="pagination" @sendPersonTable='getPersonTable' /><el-button type="primary" icon="el-icon-search" slot="reference" >查询详细数据</el-button>
</el-popover>
<el-paginationclass="pagin"backgroundlayout="prev, pager, next":page-size="10":current-page.sync="curPage":total="total"@current-change="changePage">
</el-pagination>

*:current-page.sync=“curPage”*使用了element组件中的方法,如下:

在这里插入图片描述

继续贴代码:

//index.vue中js代码
data() {return {curPage: 1}},methods:{ initPersonRecords(){//初始化要显示的表格this.tableLoading = truethis.$get('/api/querypagefile?pagination=' + JSON.stringify(this.pagination)+'&flag='+this.flag).then(res=>{if(res.code == '0'){if(this.formWhere == 'familyProblem'){this.personRecords = res.data.data.filter(res=>res.familyFileId != this.familyId)}else{this.personRecords = res.data.data}this.total = res.data.totalthis.tableLoading = false}else{this.tableLoading = false}})},changePage(page){this.pagination.page = pagethis.$refs.searchChild.submitBtn(this.pagination)//更新pagination,调用子组件里的方法,目的是为了切换页面时刷新数据},getPersonTable(data,total,num){//用来接收子组件穿回来的参数this.curPage = num //赋值给curPagethis.personRecords = data            this.total = total},     },

查询页面*(RecordsSearch.vue)代码如下:

<!--html-->
<div class="submit_btn"><el-button type="primary" @click="submit">提交</el-button>                            </div>
//js
methods: {submit(){let pagenation = {rows:10,page:1,sidx:"",sord:'ASC',records:0,total:0}this.submitBtn(pagenation)//提交调用函数,将页面page重置为1请求接口},submitBtn(params){//父组件中调用此函数this.$get('/api/querypagefile?pagination='+JSON.stringify(params)+'&query_json='+ JSON.stringify(this.form)+'&flag='+this.flag).then(res=>{//这里 params 是一个形参,是提交查询条件和更改页面刷新时的pagination的值if(res.code == '0'){let newData = []if(this.formWhere == 'familyProblem'){newData = res.data.data.filter(res=>res.familyFileId != this.familyId)}else{newData = res.data.data}this.$emit('sendPersonTable',newData,res.data.total,params.page)//这里将当前页数传回父组件,赋值给curPage,切换页数时将page赋值给pagination,再作为参数调用此函数}else{}})}}

到这里这个模块的分页已经可以正常使用,但在其他模块不生效,还存在查询后的数据不足一页,但页数2仍然存在的BUG,于是,又有如下写法:

<el-popoverplacement="top-start"width="830"v-model="isShow"trigger="click"><EncapsulatedSearche :key="new Date().getTime()" ref='encapChild' :serchEncap="pagination" @form="childForm" @sendSeal="getSeal"/><!-- @form="childForm"  接收子组件传回的表单数据 --><el-button type="primary" icon="el-icon-search" slot="reference" >查询</el-button>
</el-popover>
<el-paginationclass="pagin"backgroundlayout="prev, pager, next":current-page.sync="curPage":page-size="10":total="total"@current-change="changePage">
</el-pagination> 

js代码如下:

data() {return {curPage: 1,form:{Name:"",IDNumber:"",SealStatus:"",SealStartDate:"",SealEndDate:"",EndReasonCode:"",EndStartDate:"",EndEndDate:""}}},methods:{// 拿到子组件传递过来的form  childForm(form){this.form = formthis.pagination.page = 1this.curPage = 1   //当前页置为1this.initSeal()this.isShow = false  //这是第一篇文章里提到的参数,这里不重要},initSeal(){this.tableLoading = truethis.$get('/api/querypagefile?query_json='+JSON.stringify(this.form)+'&pagination='+JSON.stringify(this.pagination)).then(res => {if(res.code == '0'){this.sealTabal = res.data.datathis.total = res.data.totalthis.tableLoading = false}else{this.tableLoading = false}})},changePage(page){this.pagination.page = page// this.$refs.encapChild.getSealTabal(this.pagination)this.initSeal()  //改为调用初始化时使用的函数},}

子组件中的代码如下:

<div class="submitBtn"><el-button type="primary" @click="getSealTabal">提交</el-button>                            
</div>

js

        getSealTabal(params){this.$emit('form',this.form)//修改后,这个方法只将表单绑定的form传回父组件// this.$get('/api/querypagefile?query_json='+JSON.stringify(this.form)+'&pagination='+JSON.stringify(params)).then(res=>{//     if(res.code == '0'){//         this.$emit('sendSeal',res.data.data, false, params.page)//         console.log(params.page)//         //console.log(res.data)//     }// })},

到这基本上就解决了,这是一片小白工作踩坑记录,其中有一部分是有朋友指点过的,如果文章中哪些地方有问题,欢迎大家指点,希望可以多多交些朋友,撒花~

这篇关于使用分页问题:点击第二页然后查询,数据显示为第一页的问题解决的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/707160

相关文章

解决pandas无法读取csv文件数据的问题

《解决pandas无法读取csv文件数据的问题》本文讲述作者用Pandas读取CSV文件时因参数设置不当导致数据错位,通过调整delimiter和on_bad_lines参数最终解决问题,并强调正确参... 目录一、前言二、问题复现1. 问题2. 通过 on_bad_lines=‘warn’ 跳过异常数据3

Android Paging 分页加载库使用实践

《AndroidPaging分页加载库使用实践》AndroidPaging库是Jetpack组件的一部分,它提供了一套完整的解决方案来处理大型数据集的分页加载,本文将深入探讨Paging库... 目录前言一、Paging 库概述二、Paging 3 核心组件1. PagingSource2. Pager3.

解决RocketMQ的幂等性问题

《解决RocketMQ的幂等性问题》重复消费因调用链路长、消息发送超时或消费者故障导致,通过生产者消息查询、Redis缓存及消费者唯一主键可以确保幂等性,避免重复处理,本文主要介绍了解决RocketM... 目录造成重复消费的原因解决方法生产者端消费者端代码实现造成重复消费的原因当系统的调用链路比较长的时

python使用try函数详解

《python使用try函数详解》Pythontry语句用于异常处理,支持捕获特定/多种异常、else/final子句确保资源释放,结合with语句自动清理,可自定义异常及嵌套结构,灵活应对错误场景... 目录try 函数的基本语法捕获特定异常捕获多个异常使用 else 子句使用 finally 子句捕获所

解密SQL查询语句执行的过程

《解密SQL查询语句执行的过程》文章讲解了SQL语句的执行流程,涵盖解析、优化、执行三个核心阶段,并介绍执行计划查看方法EXPLAIN,同时提出性能优化技巧如合理使用索引、避免SELECT*、JOIN... 目录1. SQL语句的基本结构2. SQL语句的执行过程3. SQL语句的执行计划4. 常见的性能优

深度解析Nginx日志分析与499状态码问题解决

《深度解析Nginx日志分析与499状态码问题解决》在Web服务器运维和性能优化过程中,Nginx日志是排查问题的重要依据,本文将围绕Nginx日志分析、499状态码的成因、排查方法及解决方案展开讨论... 目录前言1. Nginx日志基础1.1 Nginx日志存放位置1.2 Nginx日志格式2. 499

SpringBoot监控API请求耗时的6中解决解决方案

《SpringBoot监控API请求耗时的6中解决解决方案》本文介绍SpringBoot中记录API请求耗时的6种方案,包括手动埋点、AOP切面、拦截器、Filter、事件监听、Micrometer+... 目录1. 简介2.实战案例2.1 手动记录2.2 自定义AOP记录2.3 拦截器技术2.4 使用Fi

C++11右值引用与Lambda表达式的使用

《C++11右值引用与Lambda表达式的使用》C++11引入右值引用,实现移动语义提升性能,支持资源转移与完美转发;同时引入Lambda表达式,简化匿名函数定义,通过捕获列表和参数列表灵活处理变量... 目录C++11新特性右值引用和移动语义左值 / 右值常见的左值和右值移动语义移动构造函数移动复制运算符

kkFileView启动报错:报错2003端口占用的问题及解决

《kkFileView启动报错:报错2003端口占用的问题及解决》kkFileView启动报错因office组件2003端口未关闭,解决:查杀占用端口的进程,终止Java进程,使用shutdown.s... 目录原因解决总结kkFileViewjavascript启动报错启动office组件失败,请检查of

Python对接支付宝支付之使用AliPay实现的详细操作指南

《Python对接支付宝支付之使用AliPay实现的详细操作指南》支付宝没有提供PythonSDK,但是强大的github就有提供python-alipay-sdk,封装里很多复杂操作,使用这个我们就... 目录一、引言二、准备工作2.1 支付宝开放平台入驻与应用创建2.2 密钥生成与配置2.3 安装ali