ElementUI中两个Select选择联动效果实现方法
实现ElementUI中两个Select选择联动效果
先上图
通过赋值的方式实现 即子级下拉选项循环数组为空 将所需的值对空数组重新赋值
代码如下
第一个循环数组为
procedureType
第二个是causeGroup
暂且称之为父级与子级
<el-select v-model="ruleForm.procedure_type" placeholder="请选择" @change="changeSelect" > <el-option v-for="(item,i) in procedureType" :key="i" :label="item" :value="item" > </el-option> </el-select> <el-select v-model="ruleForm.cause_group" placeholder="请选择" style="margin-left: 30px" > <el-option v-for="(item,i) in causeGroup" :key="i" :label="item" :value="item" > </el-option> </el-select>
须注意的是父级下拉绑定的change事件 要对子级作出滞空操作 也就是清空子选项的值不然会出现切换选项1 或者 选项2的时候子级选项值保留的问题 如下所示
methods: { changeSelect() { // 联动子级滞空 this.ruleForm.cause_group = ""; // 循环遍历父级 for (const k in this.procedureType) { if (this.ruleForm.procedure_type === this.procedureType[k]) { // 核心代码在这里 进行赋值操作 this.causeGroup = this.TypeObj[this.ruleForm.procedure_type]; } } }, }, data() { return { // 在这里定义所需的值 procedureType: ["选项a", "选项b"], TypeObj: { 选项a: ["连级选项a1", "连级选项a2", "连级选项a3"], 选项b: ["连级选项b1", "连级选项b2", "连级选项b3"], }, ruleForm: { procedure_type: "", cause_group: "", }, // 由 changeSelect 接管 causeGroup 的值 causeGroup: [], }; },
到这里已经实现了两个Select下拉联动的效果 关键就在于将定义好的值赋值给子级数组本文是模拟假数据 所以直接在数组定义数据 如果是从接口拿值 在接口请求处将数据赋给procedureType
与TypeObj
即可其实还有更简单的写法 子级数组直接循环 不进行赋值操作 但仍需保留滞空操作
<el-select v-model="ruleForm.cause_group" placeholder="请选择" style="margin-left: 30px" > <el-option v-for="(item, i) in TypeObj[ruleForm.procedure_type]" :key="i" :label="item" :value="item" > </el-option> </el-select>
总结
到此这篇关于ElementUI中两个Select选择联动效果实现的文章就介绍到这了,更多相关ElementUI Select选择联动内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
压缩Vue.js打包后的体积方法总结(Vue.js打包后体积过大问题)
大家都知道,Vuejs的 CLI工具 是基于 webpack 来实现的,所以在项目打包后,会生成的文件会很大。 主要原因是 webpack 将我们所有文件都打包成一个js文件,即使再小的项目,打包之后文件都会变得很大。 下面讲讲最近我遇到的相同问题。2020-02-02vue3如何使用postcss-px-to-viewport适配屏幕
这篇文章主要介绍了vue3如何使用postcss-px-to-viewport适配屏幕问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2023-03-03
最新评论