当前位置:首页 > 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设计与实现》一书的典型目录结构(根据常见技术书籍及Vue核心内容整理): 响应式系统 响应式数据的基本原理 依赖收集与触发更新 实现简易响应式系统 Proxy与Reflec…

vue实现下拉刷新组件

vue实现下拉刷新组件

实现下拉刷新组件的核心思路 下拉刷新功能通常通过监听触摸事件、滚动位置和动画效果实现。Vue中可以利用自定义指令或封装组件完成,以下为两种常见实现方式。 基于自定义指令的实现 创建指令监听触摸事件,…

vue实现密码框的包

vue实现密码框的包

Vue 密码框实现方案 在 Vue 中实现密码框功能,可以通过原生 HTML 结合 Vue 指令或使用第三方组件库完成。以下是几种常见方案: 原生 HTML + Vue 双向绑定 <t…

vue grid实现

vue grid实现

Vue Grid 实现方法 在 Vue 中实现网格布局可以通过多种方式完成,包括使用原生 CSS Grid、第三方组件库或自定义组件。以下是几种常见方法: 使用原生 CSS Grid 通过 Vue…

jquery实现vue

jquery实现vue

jQuery 和 Vue.js 是两种不同理念的前端工具,jQuery 以 DOM 操作和事件驱动为核心,而 Vue.js 是数据驱动的现代化框架。如果想用 jQuery 实现类似 Vue 的功能(如…

vue实现订单

vue实现订单

Vue 实现订单功能 订单数据结构设计 订单数据通常包含以下字段: order: { id: String, // 订单ID userId: String,…