当前位置:首页 > 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 实现:

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

注意事项

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

vue实现多条件查询

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

相关文章

vue实现路由导航

vue实现路由导航

路由导航的实现方式 在Vue中,路由导航主要通过Vue Router实现。Vue Router是Vue.js官方的路由管理器,用于构建单页面应用(SPA)。 基本路由配置 安装Vue Router后…

vue实现下拉刷新组件

vue实现下拉刷新组件

实现下拉刷新组件的核心思路 下拉刷新功能通常通过监听触摸事件、滚动位置和动画效果实现。Vue中可以利用自定义指令或封装组件完成,以下为两种常见实现方式。 基于自定义指令的实现 创建指令监听触摸事件…

vue slot实现

vue slot实现

vue slot 的实现方法 在 Vue 中,slot 是一种内容分发机制,允许父组件向子组件传递模板内容。以下是几种常见的 slot 实现方式: 默认 slot 默认 slot 是最基础的 sl…

vue实现效果

vue实现效果

以下是Vue实现常见效果的几种典型方法,分为不同场景说明: 数据绑定与响应式更新 使用v-model实现表单双向绑定: <template> <input v-model="…

vue 实现挂载

vue 实现挂载

Vue 实现挂载的基本方法 在 Vue 中,挂载是将 Vue 实例与 DOM 元素关联的过程。通过挂载,Vue 可以管理 DOM 并实现数据绑定和响应式更新。 创建 Vue 实例并挂载 const…

简单实现vue

简单实现vue

Vue 的基本实现 创建一个简单的 Vue 应用需要引入 Vue 库,并编写基本的模板和数据绑定逻辑。 <!DOCTYPE html> <html lang="en"> &…