当前位置:首页 > VUE

vue实现组合查询

2026-01-08 14:02:00VUE

vue实现组合查询

组合查询通常涉及多个条件的联合筛选,Vue可以结合计算属性、v-model和数组方法实现高效查询。以下是具体实现方式:

数据准备与绑定

在Vue组件中定义查询条件和数据集合:

data() {
  return {
    searchParams: {
      name: '',
      age: '',
      status: ''
    },
    rawData: [
      { id: 1, name: 'Alice', age: 25, status: 'active' },
      { id: 2, name: 'Bob', age: 30, status: 'inactive' }
    ]
  }
}

计算属性实现筛选

使用计算属性动态过滤数据:

computed: {
  filteredData() {
    return this.rawData.filter(item => {
      return (
        (this.searchParams.name === '' || 
         item.name.includes(this.searchParams.name)) &&
        (this.searchParams.age === '' || 
         item.age == this.searchParams.age) &&
        (this.searchParams.status === '' || 
         item.status === this.searchParams.status)
      )
    })
  }
}

模板中的双向绑定

在模板中使用v-model绑定查询条件:

<div>
  <input v-model="searchParams.name" placeholder="姓名">
  <input v-model="searchParams.age" placeholder="年龄" type="number">
  <select v-model="searchParams.status">
    <option value="">全部状态</option>
    <option value="active">活跃</option>
    <option value="inactive">非活跃</option>
  </select>
</div>

动态渲染结果

展示筛选后的数据:

<ul>
  <li v-for="item in filteredData" :key="item.id">
    {{ item.name }} - {{ item.age }} - {{ item.status }}
  </li>
</ul>

高级筛选优化

对于复杂查询条件,可采用对象遍历方式:

vue实现组合查询

computed: {
  filteredData() {
    return this.rawData.filter(item => {
      return Object.keys(this.searchParams).every(key => {
        const searchValue = this.searchParams[key]
        return searchValue === '' || 
               String(item[key]).includes(String(searchValue))
      })
    })
  }
}

注意事项

  • 数值比较需注意类型转换,建议使用==而非===
  • 空值处理要明确,避免undefined导致的筛选异常
  • 大数据量时考虑防抖优化性能

标签: 组合vue
分享给朋友:

相关文章

vue   实现单选

vue 实现单选

Vue 实现单选功能 在 Vue 中实现单选功能可以通过多种方式,以下是几种常见的方法: 使用原生 <input type="radio"> 绑定 v-model 通过 v-model…

vue实现分发

vue实现分发

Vue 实现分发的方法 在 Vue 中,分发(Distribution)通常指的是将内容从父组件传递到子组件,或者通过插槽(Slots)机制让父组件控制子组件的部分渲染内容。以下是几种常见的实现分发的…

vue搜索实现

vue搜索实现

Vue 搜索功能实现方法 基于计算属性的搜索 在 Vue 中可以通过计算属性实现简单的搜索功能。这种方式适合小型数据集,利用 JavaScript 的 filter 方法进行筛选。 data() {…

vue实现xterm

vue实现xterm

在 Vue 中集成 Xterm.js Xterm.js 是一个基于 TypeScript 的前端终端组件库,可用于在浏览器中实现终端功能。以下是在 Vue 项目中集成 Xterm.js 的详细步骤。…

vue遮罩实现

vue遮罩实现

实现 Vue 遮罩的常见方法 使用 CSS 定位和透明度 创建一个全屏遮罩层,通过 CSS 固定定位覆盖整个视口,并设置半透明背景色。 <template> <div cl…

vue实现uuid

vue实现uuid

使用 uuid 库生成 UUID 在 Vue 项目中,可以使用 uuid 库来生成 UUID。安装依赖: npm install uuid 在 Vue 组件中使用: import { v4 as…