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

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

需求

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

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

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

实现思路

使用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 

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.kler.cn/a/503764.html

相关文章:

  • .NET framework、Core和Standard都是什么?
  • Windows安装ES单机版设置密码
  • 数据分析-使用Excel透视图/表分析禅道数据
  • Unity 自定义批量打包工具
  • 浅谈云计算09 | 服务器虚拟化
  • arcgis中用python脚本批量给多个要素类的相同字段赋值
  • 【OpenGL/Assimp】渲染模型、半透明材质与封装光源
  • Web开发(一)HTML5
  • Elasticsearch Python 客户端是否与自由线程 Python 兼容?
  • 关于2025年智能化招聘管理系统平台发展趋势
  • 单体 vs 微服务 怎么选?
  • springboot高校教室资源管理平台
  • 2501,wtl显示html
  • 基于springboot+vue的洪涝灾害应急信息管理系统设计与实现
  • 【蓝桥杯】Python算法——快速幂
  • Python文档生成利器 - Sphinx入门指南
  • 【JVM】深入了解Java虚拟机-------内存划分、类加载机制、垃圾回收机制
  • 【Uniapp-Vue3】页面生命周期onLoad和onReady
  • 语音合成的预训练模型
  • Linux Centos中安装多个JDK并且管理
  • 基于深度学习的视觉检测小项目(十三) 资源文件的生成和调用
  • 学习进程前的简单认知-体系结构与OS
  • Qt/C++进程间通信:QSharedMemory 使用详解(附演示Demo)
  • 刷题记录 回溯算法-10:93. 复原 IP 地址
  • 如何高效使用Adobe软件的组件功能
  • OpenCV实现彩色图像的直方图均衡化