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

news/发布时间2024/5/18 20:21:06

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

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

新增时的逻辑

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

    <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>
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了。

    <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>
let selectValue = ref([]);
let options = ref<{value: string;label: string;}[]
>([]);
const remoteMethod = (value: string) => {};
onMounted(() => {// 模拟编辑页初始化的时候接口初始化赋值逻辑options.value = [{value: "1",label: "张三",},{value: "2",label: "李四",},];
});

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

['1-张三', '2-李四']

编辑操作时剔除label内容

当前options的绑定值已经是“['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]。编辑确定操作时,入参给接口就行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ulsteruni.cn/article/56627763.html

如若内容造成侵权/违法违规/事实不符,请联系编程大学网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

2.Nacos简介

Nacos简介 Nacos官方地址:https://nacos.io/ Nacos英文全称为 Dynamic Naming and Configuration Service,是一个由阿里巴巴团队使用Java语言开发的开源项目。 Nacos是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。 官方介绍是这样的:Nacos致力于帮助您…

6.常见寄存器和指令

一.寄存器 1.通用寄存器2.特殊寄存器stvec(Supervisor Trap Vector) 内核在这里写入trap处理程序的地址;RISC-V会跳转到stvec中的地址来处理trap,xv6的stvec就是trampoline page的起始地址sepc 发生trap时,RISC-V将当前的pc值存储到这里(pc随后会被stvec中的值覆盖)。从trap…

MFC-error C2589: “(”:“::”右边的非法标记

MFC-error C2589: “(”:“::”右边的非法标记错误信息 出错语句 问题原因 解决办法 错误信息 ① 错误 C2589 “(”:“::”右边的非法标记② 错误 C2059 语法错误:“)” 出错语句inline double getFitnessScore (double max_range = std::numeric_limits<double>::max()…

Thinkphp5.x全漏洞复现分析

基础知识 命名空间和子命名空间 我们可以把namespace理解为一个单独的空间,事实上它也就是一个空间而已,子命名空间那就是空间里再划分几个小空间,举个例子: <?phpnamespace animal\cat; class cat{public function __construct(){echo "meow"."\n"…

退出到restart application设置

在主题中加一个退出按钮。 点击退出按钮,增加退出事件中加入如下语句: ModalResult:=mrCancel;

CAN总线原理_学习

随着通信技术的发展,现今通信方式和协议五花八门,但CAN通信仍然是车载网络最安全可靠且应用最广的技术之一。过去,汽车通常采用常规的点对点通信方式将电子控制单元及电子装置连接起来,但随着电子设备的不断增加,导线数量也随之增多,采用CAN总线网络结构,可以达到信息共…