- 先定义一个ref
<el-cascader ref="cascader" :model-value="modelValue" @change="handleChange" @visible-change="visibleChange" />
- 在下拉框显示的时候,获取展开的菜单:this.$refs.cascader.cascaderPanelRef.menus
- 打印出来发现,获取到的是当前展开的一项菜单数组,如果展开了两个菜单,就是两个数组,以此类推,并且每项菜单数组,返回的都是当前项及子菜单数组
- 在每次显示下拉框的时候,渲染除所有子菜单数据
visibleChange(val) { if (!val) return; if (!this.modelValue) { this.$nextTick(() => { // 未选择过数据,默认展开第一行数据 let data = this.$refs.cascader.cascaderPanelRef.menus; let child1 = data[0][0]?.children; let child2 = child1[0]?.children; let child3 = child2[0]?.children; let arr = []; data[0] && arr.push(data[0]); child1 && arr.push(child1); child2 && arr.push(child2); child3 && arr.push(child3); this.$refs.cascader.cascaderPanelRef.menus = arr; }); } else if (this.modelValue && this.hasShown) { // 选择过数据 this.$refs.cascader.cascaderPanelRef.menus = this.menusData; } else { // 未选择过数据,但是赋初始值了 this.menusData = this.$refs.cascader.cascaderPanelRef.menus; } //判断是否显示过下拉框 this.hasShown = true; },
- 在改变级联数据的时候,同步需要显示的级联子菜单
handleChange(val) { this.menusData = this.$refs.cascader.cascaderPanelRef.menus; this.modelValue = val }
el-cascader默认展开第一行所有子项
最新推荐文章于 2024-06-07 17:23:29 发布