当前位置:首页 > 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: [] // 过滤后的数据
  }
}

搜索逻辑实现

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

vue和element实现搜索

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 绑定过滤后的数据:

vue和element实现搜索

<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)
    );
  });
}

清空搜索

添加清空按钮重置搜索:

<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 标签选择组件实现 基础实现 使用 Vue 的 v-for 和 v-model 指令可以快速实现标签选择功能: <template> <div class="tag-s…

vue实现钟表

vue实现钟表

使用 Vue 实现动态钟表 以下是一个基于 Vue 3 的动态钟表实现方案,包含时分秒指针和数字时间显示。 模板部分 <template> <div class="clock-…

vue datepicker 实现

vue datepicker 实现

实现 Vue Datepicker 的基本方法 在 Vue 项目中实现日期选择功能,可以使用第三方库如 vue-datepicker 或 v-calendar。以下是两种常见实现方式: 安装 vu…

vue实现选区

vue实现选区

Vue 实现选区的基本方法 在Vue中实现选区功能通常涉及DOM操作和事件处理。以下是几种常见的方法: 使用原生JavaScript的Selection API 通过window.getSel…

vue插槽实现

vue插槽实现

插槽的基本概念 Vue插槽(Slot)是一种内容分发机制,允许父组件向子组件传递模板片段,子组件通过<slot>标签定义接收位置。插槽的核心作用是增强组件的灵活性和复用性。 默认插槽 子…

vue实现socket

vue实现socket

Vue 中实现 WebSocket 通信 在 Vue 项目中实现 WebSocket 通信可以通过原生 WebSocket API 或第三方库(如 socket.io-client)完成。以下是两种常…