当前位置:首页 > VUE

vue实现多条件查询

2026-01-20 06:40:42VUE

Vue 实现多条件查询的方法

数据绑定与表单设计

在 Vue 中实现多条件查询,通常需要结合 v-model 实现表单数据的双向绑定。例如,创建一个包含多个输入条件的表单:

<template>
  <div>
    <input v-model="queryParams.keyword" placeholder="关键词">
    <select v-model="queryParams.category">
      <option value="">全部</option>
      <option value="1">分类1</option>
    </select>
    <input type="date" v-model="queryParams.startDate">
    <button @click="handleSearch">查询</button>
  </div>
</template>

定义查询参数与响应式数据

在 Vue 组件的 datasetup 中定义查询参数的响应式对象:

vue实现多条件查询

data() {
  return {
    queryParams: {
      keyword: '',
      category: '',
      startDate: ''
    },
    resultList: []
  }
}

实现查询逻辑

通过方法触发查询,可以调用 API 或本地过滤数据:

methods: {
  handleSearch() {
    // 过滤空值参数(可选)
    const params = Object.fromEntries(
      Object.entries(this.queryParams).filter(([_, v]) => v !== '')
    )

    // 调用API或本地过滤
    api.getList(params).then(res => {
      this.resultList = res.data
    })
  }
}

本地数据过滤示例

如果数据已加载到前端,可使用 computed 实现实时过滤:

vue实现多条件查询

computed: {
  filteredList() {
    return this.originalList.filter(item => {
      return (
        (this.queryParams.keyword === '' || 
         item.name.includes(this.queryParams.keyword)) &&
        (this.queryParams.category === '' || 
         item.category === this.queryParams.category)
      )
    })
  }
}

使用第三方库优化

对于复杂查询条件,可考虑使用 Lodash 的 _.filter_.debounce 实现防抖:

import { debounce } from 'lodash'

methods: {
  handleSearch: debounce(function() {
    // 查询逻辑
  }, 500)
}

路由参数同步

若需将查询条件反映在 URL 中,可通过 Vue Router 实现:

watch: {
  queryParams: {
    deep: true,
    handler(newVal) {
      this.$router.push({ query: newVal })
    }
  }
}

注意事项

  • 对于大量数据,建议使用分页查询而非一次性加载
  • 日期范围等复杂条件需特殊处理格式转换
  • 移动端需注意输入控件的用户体验优化

标签: 多条vue
分享给朋友:

相关文章

vue实现网页切换

vue实现网页切换

Vue 实现网页切换的方法 在 Vue 中实现网页切换通常可以通过以下几种方式完成,具体取决于项目需求和路由管理方式。 使用 Vue Router Vue Router 是 Vue.js 官方提供的…

vue实现人脸识别比对

vue实现人脸识别比对

Vue 实现人脸识别比对的方法 使用现成的人脸识别 API 通过调用第三方人脸识别 API(如 Face++、百度 AI、腾讯云等)实现比对功能。注册开发者账号获取 API Key 和 Secret,…

vue实现收起展开面板

vue实现收起展开面板

实现收起展开面板的方法 在Vue中实现收起展开面板功能可以通过多种方式完成,以下是几种常见的实现方法: 使用v-show或v-if控制显示隐藏 利用Vue的指令可以轻松实现面板的展开和收起:…

vue实现a4打印模板

vue实现a4打印模板

使用Vue实现A4打印模板 在Vue中实现A4打印模板需要结合CSS的打印样式和Vue的模板渲染能力。以下是具体实现方法: 设置A4纸张尺寸 在CSS中定义A4纸张的标准尺寸(210mm × 29…

vue实现分屏

vue实现分屏

Vue 实现分屏的方法 分屏功能通常用于展示多个独立内容区域,以下是几种常见的实现方式: 使用 CSS Grid 布局 通过 CSS Grid 可以轻松创建分屏布局,在 Vue 组件中直接应用样式…

vue实现积分

vue实现积分

Vue 实现积分功能 在 Vue 中实现积分功能通常涉及前端展示、交互逻辑以及与后端 API 的通信。以下是常见的实现方法和步骤: 积分展示组件 创建一个积分展示组件,用于显示当前用户的积分。可以使…