【Vue - Element 】实现表单输入框的远程搜索功能

news/2025/1/16 1:40:46 标签: vue.js, javascript, 前端

需求

表单是一个常见的元素,而在表单中,常常需要用户从大量的数据中选择一个或多个选项。

为了提高用户体验,提供远程搜索功能可以帮助用户快速找到所需的选项,而不是从冗长的下拉列表中手动查找。

以该需求为例,我们需要在【所属测试计划】字段实现远程搜索功能,能够在根据输入的关键字从服务器端(后端)获取匹配的数据列表,并且可进行选择

实现思路

使用Element UI 表单中的Select选择器组件:

  • v-model:进行数据绑定,将选择框的值与Vue实例中的数据对象绑定
  • remote:是否启用远程搜索
  • filterable:是否可搜索(启用远程搜索需要同时设置remote和filterable为true)
  • remote-method:远程搜索方法,会在输入值变化时进行调用

<el-option>中遍历远程搜索获取到的testPlanList集合:

  •  v-for:使用 Vue 的v-for指令对 testPlanList 数组进行遍历,将数组中的每个元素作为一个选项。
  • :key:每个选项设置唯一的键,具有唯一性。
  • :lable:设置选项的显示文本。
  • :value:设置选项的值,当用户选择此选项时,form.planId会被更新为该值。
<template>
  <el-form ref="form" :model="form" :rules="rules" label-width="110px">
    <el-form-item label="所属测试计划" prop="planId">
      <el-select
        v-model="form.planId"
        placeholder="请选择所属测试计划"
        remote
        filterable
        :remote-method="remoteSearchTestPlans">
        <el-option
          v-for="plan in testPlanList"
          :key="plan.planId"
          :label="plan.planName"
          :value="plan.planId"
        />
      </el-select>
    </el-form-item>
  </el-form>
</template>

远程搜索方法中,根据参数(输入值)发起查询请求,并将结果赋值给 this.testPlanList 

javascript">data(){
    return{
       // 测试计划集合
      testPlanList:[],
    }
}


methods:{ 

   /** 远程搜索项目 */
    remoteSearchTestPlans(query) {
      this.loadingTestPlan = true;//加载loding,可去掉
      if(query !== ''){
        this.queryTestPlanParams.planName = query
        listPlan(this.queryTestPlanParams).then(response => {
          this.testPlanList = response.rows;
          this.loadingTestPlan = false;
        });
      }else{
        listPlan().then(response => {
          this.testPlanList = response.rows;
          this.loadingTestPlan = false;
        });
      }
    },

}


http://www.niftyadmin.cn/n/5824520.html

相关文章

Flink专题(一) Linux下搭建Flink环境

一、Linux下载地址 1、软件镜像服务【下载速度较快&#xff0c;推荐】 flink 2、Apache官网下载 Downloads | Apache Flink 二、 Flink单机版启动 1、Flink 1.20.0需要至少JDK 17版本支持&#xff0c;提前安装好JDK环境. 2、基于CentOS 8环境. cat /etc/redhat-release 3…

如何提高自动化测试覆盖率和效率

用ChatGPT做软件测试 在现代软件开发中&#xff0c;自动化测试已经成为保证软件质量的重要手段。然而&#xff0c;在实践中&#xff0c;自动化测试的覆盖率和效率常常受到限制&#xff0c;导致潜在缺陷未能及时发现或测试资源浪费。因此&#xff0c;提升自动化测试的覆盖率和效…

手机与平板:勒索软件的“天然通道”

过去的两年中&#xff0c;63%的企业曾遭受勒索软件攻击。 随着全球媒体频频报道勒索软件威胁&#xff0c;这一话题引发了广泛关注。虽然勒索软件并非新生事物&#xff0c;但其受网络犯罪分子“青睐”的趋势却愈发显著。 为什么手机和平板成了目标&#xff1f; 当前&#xff0c…

详解C#的文件写入和读取:从基础到高级应用

详解C#的文件写入和读取&#xff1a;从基础到高级应用 文件操作是C#编程中不可或缺的一部分&#xff0c;无论是写入日志、读取配置文件&#xff0c;还是处理用户数据&#xff0c;文件读写都是开发中的常见任务。本文将全面解析C#中的文件写入和读取操作&#xff0c;涵盖从基础…

UML系列之Rational Rose笔记四:时序图(顺序图_序列图)

时序图有很多画法&#xff0c;这基本上能算rose里面要求最乱的一种图了&#xff1b;有些人的需求是BCE模式&#xff0c;这是正常规范点的&#xff0c;有些人就不需要&#xff0c;有些需要用数据库交互&#xff0c;有些不需要&#xff1b;没有一个较为统一的需求&#xff1b;在此…

pytest-instafail:让测试失败信息即时反馈

pytest-instafail&#xff1a;让测试失败信息即时反馈 前言一、简介二、优势三、安装与使用3.1 未安装时运行情况3.2 安装3.3 已安装时运行情况3.3 pytest.ini 配置选项 四、对比 总结 前言 当测试用例数量庞大时&#xff0c;定位测试失败的原因往往耗时费力。此时&#xff0c;…

vue3学习日记5 - 项目起步

最近发现职场前端用的框架大多为vue&#xff0c;所以最近也跟着黑马程序员vue3的课程进行学习&#xff0c;以下是我的学习记录 视频网址&#xff1a; Day2-11.项目起步-静态资源引入和ErrorLen安装_哔哩哔哩_bilibili 学习日记&#xff1a; vue3学习日记1 - 环境搭建-CSDN博…

JavaScript解决HTML页面Windows在不同缩放比例下的显示问题和Bootstrap模态框阴影遮盖问题

在项目开发中&#xff0c;我们通常以100%的缩放比例来设计页面样式&#xff0c;但是在客户的电脑上&#xff0c;由于屏幕的不同分辨率和缩放比例&#xff0c;可能导致页面显示错乱的问题。为了解决这个问题&#xff0c;我们可以使用一些JavaScript代码来进行屏幕适配。 首先&a…