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

elementUI两个select单选框联动

实现需求:两个单选框内容两栋,在选择第一个时,第二个选框能自动更新对应选项。且在切换第一个选项内容时,第二个选框会被清空且切换到新的对应选项。

设置值班班次和备班情况两个选项 ,完整代码如下:

<template><div class="content-box"><div class="container"><el-select v-model="leftValue" placeholder="请选择" @change="handleLeftChange"><!-- <el-option v-if="leftOptions.length !== 0" label="全选" value="all"></el-option> --><el-option v-for="item in leftOptions" :key="item.value" :label="item.label" :value="item.value"></el-option></el-select><el-selectstyle="margin-left: 20px"@change="handleRightChange"v-model="rightValue"disabledplaceholder="请选择"><el-optionv-for="item in leftOptions":key="item.value":label="item.name":value="item.id":disabled="rightDisabledOptions.includes(item.value)"></el-option></el-select></div></div>
</template><script>
export default {data() {return {leftValue: [],rightValue: [],leftOptions: [{ value: '1', label: '白班', name: '否', id: 1 },{ value: '2', label: '夜班', name: '否', id: 2 },{ value: '3', label: '备班', name: '是', id: 3 },{ value: '4', label: '全班', name: '否', id: 4 },{ value: '5', label: '休班', name: '否', id: 5}],rightDisabledOptions: [],selectData: [],updSelect: [] //为了不影响原始数据,不然原始数据勾选几次值全改变了};},mounted() {},methods: {handleLeftChange(value) {// 清空右边下拉框的选中值和禁用选项this.rightValue = [];this.rightDisabledOptions = [];this.selectData = [];// 根据左边下拉框的选中值更新右边下拉框的选中值和禁用选项// 左右结构一定要有一样的值,不然联动不了// 如果是全选,就让所有的select被选中if (value.includes('all')) {this.leftValue = this.leftOptions.map((option) => option.value);this.rightValue = this.leftOptions.map((option) => option.name);this.selectData = this.leftOptions;} else {this.leftOptions.forEach((option) => {// 如果左侧选中的包含右侧的value值if (this.leftValue.includes(option.value)) {this.rightValue.push(option.name);// 把option.id改为option.name,显示出来的才是是否this.selectData.push(option);} else {this.rightDisabledOptions.push(option.value);}});}this.updSelect = JSON.parse(JSON.stringify(this.selectData));},// 右侧选择handleRightChange(value) {//将selectData值深拷贝给UpdSelectthis.updSelect = JSON.parse(JSON.stringify(this.selectData));this.updSelect.forEach((item) => {if (!value.includes(item.id)) {item.id = -1;item.name = '';}});console.log(this.updSelect, '解决');}}
};
</script><style lang="scss" scoped></style>

由于第二个选框是和第一选框值同步的,第一个框有五个值,第二个框就也要五个选项,即使是重复的值。为了看起来没那么杂乱,我就把第二个选框禁用了(反正值能自己更新)

学习参考来源:俩个el-select的联动选择_el-select 联动-CSDN博客

http://www.lryc.cn/news/320132.html

相关文章:

  • 十四、GPT
  • 五款优秀的FTP工具
  • 十八、软考-系统架构设计师笔记-真题解析-2022年真题
  • oracle数据库名、实例名、服务名等区分
  • MQ横向对比:RocketMQ、Kafka、RabbitMQ、ActiveMQ、ZeroMQ
  • html5cssjs代码 018颜色表
  • 力扣刷题Days20-151. 反转字符串中的单词(js)
  • 基于grafana+elk等开源组件的 云服务监控大屏架构
  • PWM驱动舵机
  • 处理Centos 7 中buff/cache高的问题
  • 【送书福利第五期】:ARM汇编与逆向工程
  • STM32的USART能否支持9位数据格式话题
  • OLAP与数据仓库和数据湖
  • zookeeper快速入门三:zookeeper的基本操作
  • oracle 19c打补丁到19.14
  • Spring Boot(六十九):利用Alibaba Druid对数据库密码进行加密
  • 51单片机—DS18B20温度传感器
  • Monorepo 解决方案 — 基于 Bazel 的 Xcode 性能优化实践
  • Unity触发器的使用
  • docker compose部署rabbitmq集群
  • 数据结构/C++:红黑树
  • 【LabVIEW FPGA入门】浮点数类型支持
  • ffmpeg 滤镜实现不同采样率多音频混音
  • UserTCP 传输数据时如何保证数据的可靠性?并以LabVIEW为例进行说明
  • 基于粒子群算法的分布式电源配电网重构优化matlab仿真
  • mysql提权总结(自学)
  • [数据集][目标检测]铝片表面工业缺陷检测数据集VOC+YOLO格式400张4类别
  • 晶体管-二极管三极管MOS管选型参数总结
  • ssh命令——安全远程连接Linux服务器
  • Ansible非标记语言YAML与任务剧本Playbook