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

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.dtcms.com/a/310228.html

相关文章:

  • Js引用数据类型和ES6新特性
  • 幂等性校验(订单重复提交问题)
  • 生物医药研究数据分析工具测评:衍因科技如何重塑科研范式?
  • 鸿蒙 ArkWeb 加载优化方案详解(2025 最佳实践)
  • Linux文件操作:从C接口到系统调用
  • 8.1IO进程线程——文件IO函数
  • S7-1200 /1500 PLC 进阶技巧:组织块(OB1、OB10)理论到实战
  • 代码随想录day52图论3
  • ReAct模式深度解析:构建具备推理能力的AI智能体架构
  • 日志归档存储策略在海外云服务器环境的容量规划方法
  • 2508C++,奇怪的保留值
  • Qt deleteLater 延迟删除原理
  • 逻辑回归召回率优化方案
  • 第15讲——微分方程
  • 云服务器涉及的应用场景
  • 将本地commit已经push到orgin后如何操作
  • 应用Builder模式在C++中进行复杂对象构建
  • 梦幻接球 - 柔和色彩反弹小游戏
  • c#保留小数点后几位 和 保留有效数字
  • ctfshow_web签到题
  • LS-DYNA 分析任务耗时长,企业如何科学提升许可证使用效率?
  • 编程算法:驱动技术创新与业务增长
  • 丝杆支撑座在电子装配中的关键作用
  • 退出python的base环境
  • 基于STM32的数控机床物联网改造研究
  • 大模型应用
  • Flowable BPMN:智能流程自动化技术全面指南
  • Linux基础服务(DNS和DHCP)
  • 安卓开发--RelativeLayout(相对布局)
  • 数论:卢卡斯定理