当前位置:首页 > VUE

vue实现组合查询

2026-02-11 03:19:45VUE

Vue 实现组合查询的方法

在 Vue 中实现组合查询通常涉及表单输入绑定、数据过滤和动态查询逻辑。以下是几种常见方法:

表单输入绑定

使用 v-model 绑定多个查询条件到 Vue 实例的 data 属性:

data() {
  return {
    queryParams: {
      name: '',
      age: '',
      status: ''
    },
    items: [] // 原始数据
  }
}

模板部分:

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

计算属性过滤

通过计算属性实现实时过滤:

computed: {
  filteredItems() {
    return this.items.filter(item => {
      return (
        (this.queryParams.name === '' || 
         item.name.includes(this.queryParams.name)) &&
        (this.queryParams.age === '' || 
         item.age == this.queryParams.age) &&
        (this.queryParams.status === '' || 
         item.status === this.queryParams.status)
      )
    })
  }
}

方法触发查询

对于大数据集可使用方法手动触发查询:

methods: {
  search() {
    this.filteredItems = this.items.filter(item => {
      // 过滤逻辑同上
    })
  }
}

模板添加查询按钮:

<button @click="search">查询</button>

使用 Vuex 管理状态

大型应用可通过 Vuex 集中管理查询状态:

// store.js
state: {
  queryParams: {
    name: '',
    age: '',
    status: ''
  },
  items: []
},
getters: {
  filteredItems: state => {
    return state.items.filter(item => {
      // 过滤逻辑
    })
  }
}

第三方库集成

复杂查询场景可集成 Lodash 等工具库:

import _ from 'lodash'

computed: {
  filteredItems() {
    return _.filter(this.items, this.queryParams)
  }
}

服务端查询

需要服务端过滤时通过 axios 发送查询参数:

vue实现组合查询

methods: {
  async search() {
    const res = await axios.get('/api/items', {
      params: this.queryParams
    })
    this.items = res.data
  }
}

以上方法可根据具体需求组合使用,计算属性适合实时查询,方法触发适合手动查询,服务端查询适合大数据量场景。

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

相关文章

用vue实现滑动输入条

用vue实现滑动输入条

使用 Vue 实现滑动输入条 使用原生 HTML5 input range 实现 在 Vue 模板中直接使用 <input type="range">,通过 v-model 绑定数据:…

vue nexttick实现

vue nexttick实现

Vue 中 nextTick 的实现原理 Vue 的 nextTick 是一个用于在下次 DOM 更新循环结束之后执行延迟回调的方法。它的核心实现依赖于 JavaScript 的事件循环机制。 基本…

vue 实现音乐

vue 实现音乐

Vue 实现音乐播放功能 在 Vue 中实现音乐播放功能,可以通过 HTML5 的 <audio> 元素或第三方库如 howler.js 来实现。以下是两种方法的详细步骤: 使用 HTM…

vue实现反馈

vue实现反馈

Vue 实现反馈功能的方法 在 Vue 中实现反馈功能可以通过多种方式,包括弹窗提示、Toast 消息、表单提交等。以下是几种常见的实现方法。 弹窗反馈 使用 Vue 的组件化特性创建一个弹窗组件,…

vue实现抽屉

vue实现抽屉

Vue 实现抽屉组件 抽屉组件是一种常见的 UI 模式,通常用于从屏幕边缘滑出内容。以下是几种实现抽屉的方法: 使用 Vue 原生实现 创建一个基本的抽屉组件,利用 Vue 的过渡和条件渲染功能。…

vue模版实现

vue模版实现

Vue 模板实现方法 Vue 模板是 Vue.js 的核心特性之一,用于声明式地将 DOM 绑定至底层 Vue 实例的数据。以下是几种常见的 Vue 模板实现方式: 单文件组件(SFC) 使用 .v…