el-select下拉框远程搜索且多选时,编辑需要回显的一个简单案例

news/2024/12/14 11:01:48/

前端业务开发中不管使用vue2~3,还是react,angular各种前端技术栈,经常会遇到这种业务。一个下拉框Select中,不仅需要需要支持远程模糊搜索,还需要支持多选。并且在编辑时,还能正常把已经多选好的内容回显到Select中。

用Vue3+ElementPlus+TS举一个简单的案例。其他技术栈思路是一致的
新增时的逻辑

这一步和普通操作没有什么区别

<template><el-selectv-model="selectValue"multiplefilterableremotereserve-keywordplaceholder="请搜索并选择内容":remote-method="remoteMethod"style="width: 240px"><el-optionv-for="item in options":key="item.value":label="`${item.value}-${item.label}`":value="item.value"/></el-select>
</template>
<script lang="ts" setup>
let selectValue = ref([]);
let options = ref<{value: string;label: string;}[]
>([]);
const remoteMethod = (value: string) => {// 模拟远程接口查询// 一般远程模糊搜索的接口都带分页,如果数据为10万条,模糊搜索时肯定一次不能查10万条,还是需要正产分页的setTimeout(() => {options.value = [{value: "1",label: "张三",},{value: "2",label: "李四",},{value: "3",label: "王五",},];}, 200);
};</script>

多选OK的效果

在这里插入图片描述

编辑需要回显时的逻辑(关键点)

当这个下拉框在编辑页时,需要把同样已经多选的内容完整回显到这个下拉框中,因为数据本身就是多选,接口还是是分页的,回显时肯定不能使用接口查询功能来回显数据。因此,el-select的:value绑定就不应该只绑定value了。

<template><el-selectv-model="selectValue"multiplefilterableremotereserve-keywordplaceholder="请搜索并选择内容":remote-method="remoteMethod"style="width: 240px"><!--value直接也把label绑定上--><el-optionv-for="item in options":key="item.value":label="`${item.value}-${item.label}`" :value="`${item.value}-${item.label}`"/></el-select>
</template>
<script lang="ts" setup>
let selectValue = ref([]);
let options = ref<{value: string;label: string;}[]
>([]);
const remoteMethod = (value: string) => {};
onMounted(() => {// 模拟编辑页初始化的时候接口初始化赋值逻辑// 编辑页面查询到多选的详情信息dataconst data = [  {  value: "1",  label: "张三",  },  {  value: "2",  label: "李四",  }, ];  selectValue.value = data.map(item => `${item.value}-${item.label}`); //['1-张三', '2-李四'];
});
</script>

这时候selectValue的绑定时就不仅仅是value了,而是这样的格式。这样就不需要通过后端接口来实现多选内容的数据回显了。

['1-张三', '2-李四']
编辑操作时剔除label内容

当前selectValue的绑定值已经是“[‘1-张三’, ‘2-李四’]”这样了,编辑操作确定提交数据时剔除-label就行。

const originalArray = ['1-张三', '2-李四'];  const numericArray = originalArray.map(item => {  // 使用split('-')分割字符串,并取第一个元素(即数字部分)  const numberPart = item.split('-')[0];  // 将字符串转换为数字  return parseInt(numberPart, 10);  
});  console.log(numericArray); // 输出: [1, 2]。编辑确定操作时,入参给接口就行。

如果业务需求的label展示值不是

:label="`${item.value}-${item.label}`"

这种形式,而是只展示名称label,不需要对应value

:label="`${item.label}`"

这样的形式,有空我在把另一种思路加上。未完待续…


http://www.ppmy.cn/news/1434581.html

相关文章

有哪些网络连接方式?

网络连接方式多种多样&#xff0c;大家常常对各类连接方式感到困惑&#xff0c;难以区分。以下是从连接形式和用途的角度分类的几种主要网络连接方式&#xff1a; 按连接形式分类 1、有线连接&#xff1a; 以太网连接&#xff1a;使用双绞线或同轴电缆&#xff0c;常见于局域…

「JavaEE」线程状态

&#x1f387;个人主页&#xff1a;Ice_Sugar_7 &#x1f387;所属专栏&#xff1a;JavaEE &#x1f387;欢迎点赞收藏加关注哦&#xff01; 线程状态 &#x1f349;start 和 run 的区别&#x1f349;终止线程&#x1f349;join & 阻塞状态&#x1f349;线程六大状态 &…

开源AI Agent框架的选择

在选择开源AI Agent框架时,首先需要考虑的是框架的开发优先级、功能特性以及社区支持情况。SuperAGI是一个开发者优先的开源自主AI代理框架,它使开发人员能够快速可靠地构建、管理和运行有用的代理12。这表明SuperAGI可能是一个适合需要快速迭代和高度自定义能力的项目的良好…

Springboot+Vue项目-基于Java+MySQL的图书馆管理系统(附源码+演示视频+LW)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;Java毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计 &…

低视力者出行升级:适配服务助力双手解放与环境感知

作为一名资深记者&#xff0c;我有幸深入了解并记录低视力者在日常出行中所面临的挑战与解决方案。近年来&#xff0c;低视力者辅助设备适配服务提供领域的创新成果&#xff0c;尤其是结合手机应用的辅助设备&#xff0c;正在以人性化、智能化的方式&#xff0c;帮助低视力者实…

在PostgreSQL中,如何创建一个触发器并在特定事件发生时执行自定义操作?

文章目录 解决方案示例代码1. 创建自定义函数2. 创建触发器 解释 在PostgreSQL中&#xff0c;触发器&#xff08;trigger&#xff09;是一种数据库对象&#xff0c;它能在特定的事件&#xff08;如INSERT、UPDATE或DELETE&#xff09;发生时自动执行一系列的操作。这些操作可以…

软考高级架构师:AI 通俗讲解软件维护的类型:正确性维护、适应性维护、完善性维护、预防性维护

软件维护是指在软件交付使用后进行的一系列活动&#xff0c;其目的是修复错误、提升性能或更新软件以适应变化的需求。通常&#xff0c;软件维护可以分为四种类型&#xff1a;正确性维护、适应性维护、完善性维护和预防性维护。下面我将用简单的例子和通俗的语言来解释这四种类…

linux复习提纲

后台运行 &&#xff1a;命令行尾输入&#xff0c;命令执行后台运行fg % 作业号&#xff1a;作业前台执行bg % 作业号&#xff1a;作业后台执行 用户权限 主user&#xff08;u&#xff09;-同一组的&#xff08;g&#xff09;-其他&#xff08;o&#xff09; rwx&#xf…