当前位置:首页 > VUE

vue实现组合查询

2026-01-08 14:02:00VUE

vue实现组合查询

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

数据准备与绑定

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

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绑定查询条件:

vue实现组合查询

<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>

高级筛选优化

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

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 Router 是 Vue.js 官方的路由管理器,用于实现单页应用(SPA)的页面切换。以下是几种常见的内部路由切换方式: 使用 <router-li…

vue异步组建实现原理

vue异步组建实现原理

Vue 异步组件实现原理 Vue 的异步组件允许将组件按需加载,通常用于代码分割或延迟加载非关键组件。其核心原理基于 Promise 和动态导入。 基本实现方式 通过 defineAsyncComp…

vue实现后退

vue实现后退

Vue 实现后退功能的方法 在 Vue 中实现后退功能通常可以通过以下几种方式完成,具体取决于应用场景和需求。 使用 window.history API 通过原生 JavaScript 的 win…

vue实现分类

vue实现分类

Vue实现分类功能的方法 使用v-for和计算属性 通过计算属性对数据进行分类处理,结合v-for渲染分类后的列表。示例代码: <template> <div>…

vue权限实现

vue权限实现

Vue 权限实现方案 基于路由的权限控制 通过路由守卫实现权限验证,在路由配置中添加meta字段标记权限要求。在router.beforeEach中检查用户权限与路由要求的匹配情况。 // rou…

vue实现切换

vue实现切换

Vue 实现切换功能的方法 在 Vue 中实现切换功能可以通过多种方式实现,以下是一些常见的方法: 使用 v-if 和 v-else 指令 通过条件渲染实现切换功能,适用于简单的显示/隐藏场景。…