深拷贝解决elementui分页条件查询BUG

在开发中遇到一个问题,当用户在带有条件的输入框或选项中输入后,不点击查询直接翻页会导致分页携带查询条件。解决方法是通过创建两个数据对象,一个用于查询条件,一个用于分页,使用深拷贝确保分页操作时不影响查询状态。在查询时将查询条件复制到分页对象,重置时清空条件对象并重新加载列表。
摘要由CSDN通过智能技术生成

之前在公司开发功能的时候,发现了一个通用业务的问题

带有条件输入框,或者选项框,通过点击查询按钮 , 渲染列表分页的时候,通常会遇到一个BUG

当我选择或者输入了查询条件的时候 ,直接不点击查询按钮 , 直接点击分页的时候 , 会直接进行一个带有条件的查询 , 实际上这样的做法是有问题的

解决方案:

通过双条件对象,深拷贝,分页和查询走两个方法即可消除

data(){
  return{
      formInline:{}, // 条件查询对象
      pageForm:{}, // 分层深拷贝对象
      pageValue: { pageSize: 10, total: 0, pageNum: 1 },
  }
}
mounted(){
    //  请求列表接口
    this.getTableList();
},

methods:{
   // 条件查询
   getTableList(){
      let data = {
        ...this.pageValue,
        ...this.pageForm,
      };
      // 接口赋值等逻辑
      ....

   },

   // 点击按钮进行查询
   onSearch(){
     // 点击按钮的时候,深拷贝赋值,保留点击查询后的数据
     this.pageForm = JSON.parse(JSON.stringify(this.formInline));
     
     let data = {
        ...this.pageValue,
        ...this.formInline,
     };
     
      // 接口赋值等逻辑
      ....     
     
   },

   // 重置数据按钮
    resetForm(formName) {
      this.$refs[formName].resetFields();
      this.pageForm = {};
      this.getTableList();
    },

   // 其余所有接口 
   // 涉及到类似重新请求的,基本都走getTableList() 接口即可


}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Element UI 是一款基于 Vue.js 的 UI 组件库,它提供了丰富的组件,其中也包含了分页组件。要实现分页条件查询功能,你可以按照以下步骤进行操作: 1. 安装 Element UI:首先,你需要在你的项目中安装 Element UI。可以通过 npm 或者 yarn 进行安装: ``` npm install element-ui --save ``` 2. 引入分页组件:在你需要使用分页功能的页面中,引入 Element UI 的分页组件: ```javascript import { Pagination } from 'element-ui'; ``` 3. 使用分页组件:在模板中使用分页组件,并绑定相应的属性和事件: ```html <template> <div> <!-- 查询条件 --> <input type="text" v-model="query" /> <button @click="search">搜索</button> <!-- 数据展示 --> <ul> <li v-for="item in data" :key="item.id">{{ item.name }}</li> </ul> <!-- 分页组件 --> <pagination :total="total" :current-page="currentPage" :page-size="pageSize" @current-change="handleCurrentChange" ></pagination> </div> </template> ``` 4. 处理查询分页逻辑:在对应的 Vue 组件中,编写处理查询分页逻辑的方法: ```javascript export default { data() { return { query: '', // 查询条件 data: [], // 查询结果 total: 0, // 总条数 currentPage: 1, // 当前页码 pageSize: 10, // 每页显示条数 }; }, methods: { search() { // 根据查询条件发送请求获取数据 // 这里可以使用你喜欢的方式,比如使用 axios 发送请求 // 请求成功后,更新数据和总条数 }, handleCurrentChange(page) { // 当前页码改变时的处理逻辑 this.currentPage = page; // 根据新的页码发送请求获取数据 // 请求成功后,更新数据 }, }, }; ``` 通过以上步骤,你可以在 Element UI 中实现分页条件查询功能。根据具体需求,你可能还需要处理其他逻辑,比如请求失败时的错误提示等。希望对你有所帮助!如果还有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值