当前位置:首页 > VUE

vue和element实现搜索

2026-01-21 12:24:55VUE

Vue 与 Element UI 实现搜索功能

在 Vue 项目中结合 Element UI 实现搜索功能,通常需要以下几个关键步骤:

数据绑定与输入框

使用 Element UI 的 el-input 组件绑定搜索关键词,通过 v-model 实现双向数据绑定:

<el-input v-model="searchKeyword" placeholder="请输入搜索内容"></el-input>

在 Vue 实例中定义 searchKeyword

data() {
  return {
    searchKeyword: '',
    originalData: [], // 原始数据
    filteredData: [] // 过滤后的数据
  }
}

搜索逻辑实现

通过计算属性或方法对原始数据进行过滤。以下是计算属性方式:

computed: {
  filteredData() {
    return this.originalData.filter(item => 
      item.name.toLowerCase().includes(this.searchKeyword.toLowerCase())
    );
  }
}

或使用方法触发搜索:

methods: {
  handleSearch() {
    this.filteredData = this.originalData.filter(item =>
      item.name.toLowerCase().includes(this.searchKeyword.toLowerCase())
    );
  }
}

结合表格展示

若需在表格中展示搜索结果,使用 el-table 绑定过滤后的数据:

<el-table :data="filteredData">
  <el-table-column prop="name" label="名称"></el-table-column>
  <!-- 其他列 -->
</el-table>

实时搜索优化

添加防抖(debounce)避免频繁触发搜索:

import { debounce } from 'lodash';

methods: {
  handleSearch: debounce(function() {
    this.filteredData = this.originalData.filter(item =>
      item.name.includes(this.searchKeyword)
    );
  }, 300)
}

多条件搜索

对于多条件搜索,可扩展搜索逻辑:

filteredData() {
  return this.originalData.filter(item => {
    const keyword = this.searchKeyword.toLowerCase();
    return (
      item.name.toLowerCase().includes(keyword) ||
      item.description.toLowerCase().includes(keyword)
    );
  });
}

清空搜索

添加清空按钮重置搜索:

vue和element实现搜索

<el-input v-model="searchKeyword" placeholder="请输入搜索内容">
  <el-button slot="append" icon="el-icon-close" @click="searchKeyword = ''"></el-button>
</el-input>

完整示例

<template>
  <div>
    <el-input v-model="searchKeyword" placeholder="搜索" @input="handleSearch"></el-input>
    <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>

<script>
export default {
  data() {
    return {
      searchKeyword: '',
      originalData: [
        { name: '张三', age: 20 },
        { name: '李四', age: 25 }
      ]
    };
  },
  computed: {
    filteredData() {
      return this.originalData.filter(item =>
        item.name.includes(this.searchKeyword)
      );
    }
  }
};
</script>

通过以上方式,可以快速在 Vue 项目中结合 Element UI 实现高效的搜索功能。

标签: vueelement
分享给朋友:

相关文章

vue 实现筛选

vue 实现筛选

实现筛选功能的基本方法 在Vue中实现筛选功能通常涉及以下几个核心步骤: 数据绑定与筛选逻辑 使用v-model绑定筛选条件到Vue实例的数据属性,结合计算属性实现动态筛选: data() {…

vue实现定时

vue实现定时

Vue 实现定时功能的方法 使用 setInterval 和 clearInterval 在 Vue 中可以通过 setInterval 和 clearInterval 实现定时功能。在组件的 mou…

vue实现api

vue实现api

Vue 实现 API 调用 在 Vue 中调用 API 通常涉及使用 axios 或 fetch 发送 HTTP 请求,并结合 Vue 的响应式特性管理数据。以下是常见的实现方式: 安装 axios…

vue实现通讯

vue实现通讯

Vue 组件通讯方法 父子组件通讯 父组件向子组件传递数据通过 props,子组件向父组件传递数据通过 $emit 事件。 父组件模板: <child-component :message=…

vue实现队列

vue实现队列

Vue 实现队列功能 在 Vue 中实现队列功能可以通过多种方式完成,以下是几种常见的方法: 使用数组模拟队列 队列遵循先进先出(FIFO)原则,可以用数组的 push 和 shift 方法模拟入队…

vue实现指引

vue实现指引

Vue 实现指引功能 Vue 中实现指引功能可以通过多种方式完成,常见的有使用第三方库或自定义实现。以下是几种常见方法: 使用第三方库(如 driver.js) 安装 driver.js: np…