当前位置:首页 > VUE

vue element实现表格搜索

2026-02-25 07:40:23VUE

Vue Element 表格搜索实现方法

基础搜索功能实现

在Vue项目中结合Element UI的表格组件实现搜索功能,可以通过以下方式完成。假设有一个包含数据的表格,需要根据输入框内容进行筛选。

  1. 模板部分代码

    vue element实现表格搜索

    <template>
    <div>
     <el-input v-model="searchQuery" placeholder="输入关键字搜索" style="width: 200px"/>
     <el-table :data="filteredData">
       <el-table-column prop="name" label="姓名"></el-table-column>
       <el-table-column prop="age" label="年龄"></el-table-column>
     </el-table>
    </div>
    </template>
  2. 脚本部分代码

    <script>
    export default {
    data() {
     return {
       tableData: [
         { name: '张三', age: 25 },
         { name: '李四', age: 30 }
       ],
       searchQuery: ''
     }
    },
    computed: {
     filteredData() {
       return this.tableData.filter(item => 
         item.name.includes(this.searchQuery) ||
         item.age.toString().includes(this.searchQuery)
       )
     }
    }
    }
    </script>

多条件高级搜索

对于需要多个搜索条件的场景,可以扩展搜索功能:

vue element实现表格搜索

<template>
  <div>
    <el-form :inline="true">
      <el-form-item label="姓名">
        <el-input v-model="searchForm.name" placeholder="姓名"></el-input>
      </el-form-item>
      <el-form-item label="年龄">
        <el-input v-model="searchForm.age" placeholder="年龄"></el-input>
      </el-form-item>
      <el-button type="primary" @click="handleSearch">搜索</el-button>
    </el-form>

    <el-table :data="filteredData">
      <!-- 表格列定义 -->
    </el-table>
  </div>
</template>

<script>
export default {
  data() {
    return {
      tableData: [...], // 原始数据
      searchForm: {
        name: '',
        age: ''
      }
    }
  },
  methods: {
    handleSearch() {
      // 触发计算属性重新计算
      this.$forceUpdate()
    }
  },
  computed: {
    filteredData() {
      return this.tableData.filter(item => {
        const nameMatch = item.name.includes(this.searchForm.name)
        const ageMatch = item.age.toString().includes(this.searchForm.age)
        return nameMatch && ageMatch
      })
    }
  }
}
</script>

远程搜索实现

当数据量较大时,可以采用后端接口搜索的方式:

methods: {
  async handleSearch() {
    try {
      const res = await this.$http.get('/api/data', {
        params: this.searchForm
      })
      this.tableData = res.data
    } catch (error) {
      console.error(error)
    }
  }
}

搜索优化技巧

  1. 防抖处理减少请求频率
    
    import { debounce } from 'lodash'

methods: { handleSearch: debounce(function() { // 搜索逻辑 }, 500) }


2. 添加加载状态
```html
<el-table v-loading="loading" :data="tableData">
  1. 空状态提示
    <el-table :data="filteredData">
    <template #empty>
     <el-empty description="暂无数据或未找到匹配结果"></el-empty>
    </template>
    </el-table>

以上方法可以根据实际项目需求进行组合和调整,实现适合业务的表格搜索功能。

标签: 表格vue
分享给朋友:

相关文章

vue 实现

vue 实现

Vue 实现的基本步骤 安装 Vue.js 可以通过 npm 或 CDN 引入。使用 npm 安装适合大型项目,CDN 适合快速原型开发。 npm install vue 在 HTML 文件中引入…

vue实现sso

vue实现sso

Vue 实现 SSO(单点登录)方案 单点登录(SSO)允许用户通过一次登录访问多个相关系统。以下是基于 Vue 的实现方案: 使用 OAuth2/OpenID Connect 协议 OAuth2…

vue实现注销

vue实现注销

实现用户注销功能 在Vue应用中实现用户注销功能通常涉及清除用户会话、重置应用状态并跳转到登录页面。以下是具体实现方法: 清除用户认证信息 使用Vuex或Pinia管理用户状态时,需在注销时重置存储…

vue核心实现

vue核心实现

Vue 核心实现原理 Vue.js 的核心实现主要包括响应式系统、虚拟 DOM、模板编译和组件化机制。以下是关键实现原理的详细说明: 响应式系统 Vue 使用 Object.defineProper…

vue实现注册

vue实现注册

Vue 实现注册功能 注册功能通常涉及前端表单、数据验证、与后端 API 的交互等步骤。以下是一个完整的 Vue 实现注册功能的方案。 创建注册表单 使用 Vue 的模板语法创建注册表单,包含用户名…

vue实现追加

vue实现追加

追加数据到数组或列表 在Vue中追加数据到数组或列表,可以通过push方法或concat方法实现。以下是几种常见的实现方式: 方法一:使用push方法 this.items.push(newIte…