当前位置: 首页 > news >正文

使用 Vue.js 和 Element Plus 实现自动完成搜索功能

使用 Vue.js 和 Element Plus 实现自动完成搜索功能

  • 一、前言
    • 1.环境准备
    • 2.组件配置
    • 3.后端数据请求
    • 4.样式
    • 5.总结


一、前言

在前端开发中,实现自动完成(autocomplete)功能可以极大地提升用户体验,特别是在需要用户输入和选择内容的场景中。本文将介绍如何使用 Vue.js 结合 Element Plus 组件库,通过向后端发送请求来实现搜索并匹配功能。

1.环境准备

确保你的项目已经集成了 Vue.js 和 Element Plus。如果还没有安装,可以通过以下方式进行安装:

npm install vue@next
npm install element-plus

2.组件配置

首先,我们将创建一个包含自动完成功能的表单组件。

<template><el-form-item label="搜索并匹配:"><el-autocompleteplaceholder="请输入匹配内容"v-model="matchName":fetch-suggestions="querySearchAsync"@select="handleSelect"></el-autocomplete></el-form-item>
</template>

在上面的代码中:

  • el-autocomplete 是 Element Plus 提供的自动完成组件,用于实现输入框下拉匹配功能。
  • v-model="matchName" 将输入框的值与 matchName 变量进行双向绑定。
  • :fetch-suggestions="querySearchAsync" 指定了一个方法 querySearchAsync,用于根据用户输入获取匹配的选项列表。
  • @select="handleSelect" 当用户选择了某个选项时触发 handleSelect 方法。

3.后端数据请求

<script setup> 部分,我们使用 Axios 发起异步请求来获取后端数据。

<script setup>
import axios from "axios";
import { ref } from "vue";
import { ElMessage } from "element-plus";const matchName = ref("");const querySearchAsync = async (querySearch, cb) => {if (!querySearch) {cb([]);return;}try {const response = await axios.get("/xxxxx/xxxxx/xxxxxxx", {params: { current: 1, size: 10, roomName: querySearch },});const options = response.data.data.map(item => ({id: item.id, // 后端返回的唯一标识字段value: item.mpbm // 后端返回的显示文本字段}));cb(options);} catch (error) {ElMessage.error(error.message);cb([]);}
};const handleSelect = (item) => {console.log(item, "选择结果");console.log("[id:" + item.id + "; mpbm:" + item.value + "]");
};
</script>

在这段代码中:

  • querySearchAsync 方法接收用户输入的 querySearch 参数,并通过 Axios 发送 GET 请求到后端接口 /dockingApi/ladderControl/queryRoomName
  • 后端返回的数据格式应包含一个数组,每个元素至少包含 idmpbm(显示文本)字段。
  • 如果请求成功,将返回的数据转换为适合自动完成组件的格式,并通过 cb(options) 将匹配的选项列表传递给组件。
  • 如果请求失败,将显示错误消息。

4.样式

最后,在 <style scoped> 部分,你可以添加组件的样式。

<style scoped>
/* 可以根据需要添加样式 */
</style>

5.总结

通过以上配置,我们成功地实现了一个基于 Vue.js 和 Element Plus 的自动完成搜索功能。用户可以在输入框中输入内容,系统会自动向后端发送请求,并展示匹配的选项供用户选择。这种交互方式不仅提高了用户体验,还通过优化搜索流程,增强了应用程序的功能性和易用性。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【MySQL】6.表的增删查改(CURD)
  • Git协作
  • 预测算法面试
  • 【ARMv8/v9 GIC 系列 5.6 -- GIC 超优先级中断详细介绍】
  • mysql的事务,你弄懂了吗?(Innodb)
  • R语言学习笔记3-基本类型篇
  • DR模式介绍
  • C++20中的基于范围的for循环(range-based for loop)
  • leetcode165.解密数字
  • 矩阵分析与应用1-矩阵代数基础
  • 热词分析与维度人物构建
  • HarmonyOS Next应用开发之系统概述
  • Flink 提交作业的方式
  • dataX入门
  • 科研绘图系列:R语言双侧条形图(bar Plot)
  • “寒冬”下的金三银四跳槽季来了,帮你客观分析一下局面
  • 2017-09-12 前端日报
  • Android 初级面试者拾遗(前台界面篇)之 Activity 和 Fragment
  • Bytom交易说明(账户管理模式)
  • CSS中外联样式表代表的含义
  • Git的一些常用操作
  • javascript数组去重/查找/插入/删除
  • MySQL QA
  • PhantomJS 安装
  • python docx文档转html页面
  • 反思总结然后整装待发
  • 关于List、List?、ListObject的区别
  • 时间复杂度与空间复杂度分析
  • AI算硅基生命吗,为什么?
  • 数据库巡检项
  • ​ ​Redis(五)主从复制:主从模式介绍、配置、拓扑(一主一从结构、一主多从结构、树形主从结构)、原理(复制过程、​​​​​​​数据同步psync)、总结
  • ​RecSys 2022 | 面向人岗匹配的双向选择偏好建模
  • ​学习一下,什么是预包装食品?​
  • #FPGA(基础知识)
  • #QT(智能家居界面-界面切换)
  • (回溯) LeetCode 131. 分割回文串
  • (四)React组件、useState、组件样式
  • (五)网络优化与超参数选择--九五小庞
  • (学习日记)2024.01.09
  • (原创)攻击方式学习之(4) - 拒绝服务(DOS/DDOS/DRDOS)
  • (自用)gtest单元测试
  • .gitignore
  • .NET MVC 验证码
  • .NET MVC、 WebAPI、 WebService【ws】、NVVM、WCF、Remoting
  • .Net OpenCVSharp生成灰度图和二值图
  • .netcore 如何获取系统中所有session_如何把百度推广中获取的线索(基木鱼,电话,百度商桥等)同步到企业微信或者企业CRM等企业营销系统中...
  • .Net通用分页类(存储过程分页版,可以选择页码的显示样式,且有中英选择)
  • .Net中间语言BeforeFieldInit
  • ::before和::after 常见的用法
  • @antv/g6 业务场景:流程图
  • @TableId注解详细介绍 mybaits 实体类主键注解
  • [ vulhub漏洞复现篇 ] JBOSS AS 5.x/6.x反序列化远程代码执行漏洞CVE-2017-12149
  • [<死锁专题>]
  • [acwing周赛复盘] 第 69 场周赛20220917
  • [Ariticle] 厚黑之道 一 小狐狸听故事