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

vue+element 实现下拉框共享options

背景

用户的需求总是多样的,这不用户想做个下拉连选,每选一个基金,下方表格多一行,选择对应的重要性,任务;
在这里插入图片描述

问题

其他都好弄,任务是远程搜索,选择人的单选下拉,如果每个下拉都对应独立的options,那真是维护灾难,本身这也是动态的,而且感觉也完全没必要;尝试所有任务下拉使用同一个options对象;

核心代码

  • template
<el-table-column label="任务B角"><template slot-scope="scope"><el-selectv-model="scope.row.taskB"placeholder="请选择"filterableremoteclearable:remote-method="queryUsers"@change="userSelectChange($event,scope.row.investFundId,'taskB')"><el-optionv-for="item in userOptions":key="item.userId":label="item.userName":value="item.userId"/></el-select></template></el-table-column>
  • js
<script>
export default {data () {return {userOptions: [] // / 共享options}},watch: {value: {handler (newVal) {if (newVal != null && newVal.length > 0) {this.initPage(newVal)}},deep: true}},methods: {userSelectChange (userId, investId, key) {this.$nextTick(() => {this.userOptions = this.mergeUserArrays(this.userOptions, [])})},queryUsers (keyword) {const param = new URLSearchParams()param.append('key', keyword || '')getAllCreateHumans(param).then(res => {this.userOptions = res?.data ?? []})},mergeUserArrays (arr1, arr2) {const map = new Map();// 遍历第二个数组(后合并的数组,优先保留)[...arr2 ?? [], ...arr1 ?? []].forEach(user => {map.set(user.userId, user) // 后设置的会覆盖前面的})return Array.from(map.values())}}
}
</script>
  • element的select,在搜索时,下拉展示的是接口返回列表,感觉并没有真正修改options,当选中后,会把选中项添加入options中;
  • 当有多个下拉选择同一个用户时,options中会出现重复项,这就需要去重
  • 去重时机比较重要,要在select添加完选中项之后,否则去重代码没有效果;因此代码中使用了$nextTick
http://www.xdnf.cn/news/16947.html

相关文章:

  • HFSS许可管理自动化工具
  • JAVA并发编程工具
  • [echarts] 更新数据
  • ForCenNet:文档图矫正迎来新SOTA(2025)
  • Wisdom SSH开启高效管理服务器的大门
  • ceph 14.2.22 nautilus Balancer 数据平衡
  • RK3588实现wlan直连
  • 一致连续性背后的直觉是什么?
  • 【通用视觉框架】基于QT+Halcon开发的流程拖拽式通用视觉框架软件,全套源码,开箱即用
  • windows mamba-ssm环境配置指南
  • 洛谷P4479第K大斜率
  • c#保留小数点后几位 和 保留有效数字
  • 【智能体agent】入门之--4.1 autogen agentic rag
  • C++继承中虚函数调用时机问题及解决方案
  • CG--逻辑判断1
  • 译 | BBC Studios团队:贝叶斯合成控制方法SCM的应用案例
  • C++ --- stack和queue的使用以及简单实现
  • 第三章 网络安全基础(一)
  • PendingIntent相关流程解析
  • 京东零售在智能供应链领域的前沿探索与技术实践
  • 逻辑回归召回率优化方案
  • 《协作画布的深层架构:React与TypeScript构建多人实时绘图应用的核心逻辑》
  • 插件升级:Chat/Builder 合并,支持自定义 Agent、MCP、Rules
  • Spring Boot 2.1.18 集成 Elasticsearch 6.6.2 实战指南
  • 使用GPU和NPU视频生成的优劣对比
  • 修改DeepSeek翻译得不对的V语言字符串文本排序程序
  • (线段树)SP2916 GSS5 / nfls #2899 查询最大子段和 题解
  • 烽火HG680-KX-海思MV320芯片-2+8G-安卓9.0-强刷卡刷固件包
  • 一种新的分布式ID生成方案--ULID
  • 自学嵌入式 day40 51单片机