当前位置:首页 > 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 中定义查询参数的响应式对象:

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 实现实时过滤:

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 实现:

vue实现多条件查询

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

注意事项

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

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

相关文章

vue实现app

vue实现app

Vue 实现 App 的常见方法 使用 Vue 开发移动端 App 主要有两种主流方案:混合开发(Hybrid)和原生渲染。以下是具体实现方式和工具链: 混合开发方案(WebView 嵌入) 通过…

vue 实现列表

vue 实现列表

Vue 实现列表的方法 在 Vue 中实现列表通常使用 v-for 指令,结合数组或对象数据渲染动态列表。以下是几种常见的实现方式: 基础列表渲染 使用 v-for 指令遍历数组,渲染列表项。ite…

vue实现slot

vue实现slot

Vue 中的 Slot 实现方法 Vue 的 slot 是一种内容分发机制,允许父组件向子组件插入内容。以下是几种常见的 Slot 实现方式: 默认 Slot 子组件通过 <slot>…

vue实现mui

vue实现mui

使用 Vue 实现 MUI(Material-UI)风格的界面 Vue 本身不直接提供 MUI(Material Design)组件,但可以通过集成第三方库或手动实现来达到类似效果。以下是几种常见方法…

vue实现ide

vue实现ide

Vue 实现 IDE 的基本思路 使用 Vue 构建一个简易的集成开发环境(IDE)需要整合代码编辑器、文件管理、终端模拟等功能。以下是关键实现步骤和推荐工具。 核心功能模块 代码编辑器 使用…

vue实现滚屏

vue实现滚屏

实现滚屏的基本方法 在Vue中实现滚屏效果可以通过多种方式完成,常见的有原生JavaScript滚动方法、第三方库或CSS动画。以下是几种常见实现方式: 使用window.scrollTo或Elem…