el-cascader点击任意一级的label,并将菜单收起

前言:需要一个级联菜单,点击任意一级就可以进行查询,然后级联菜单收起

根据element文档将checkStrictly设置为true就可以了:

可是问题又来了:1>以下级联菜单只能点击单选框生效   2>级联菜单选中后不消失,只能点击空白处才会消失

而我不需要单选框的出现,点击label直接选中,然后级联菜单消失

方法一:

选中让级联菜单收起:设置每次监听值变化的时候,把 dropDownVisible 属性设置为 false 即可(每次级联菜单的值有变化,就把级联菜单收起)

 watch: {
    handlerValue() {
      if (this.$refs.refHandle) {
        this.$refs.refHandle.dropDownVisible = false; //监听值发生变化就关闭它
      }
    }
  },

点击label选中:点击文本就让它自动点击前面的input就可以触发选择。

mounted() {
    setInterval(function() {
      document.querySelectorAll(".el-cascader-node__label").forEach(el => {
        el.onclick = function() {
          if (this.previousElementSibling) this.previousElementSibling.click();
        };
      });
    }, 1000);
  },

方法一虽然把问题解决了,但是比较消耗性能

方法二:

级联菜单页面上把点击方法暴露出来

点击把值赋给originValue,并让菜单收起

这样问题就解决了

 

### el-cascader 选择任意一级即返回的解决方案 在 Vue 项目中使用 Element UI 的 `el-cascader` 组件时,可以通过配置属性来实现选择任意一级的功能。具体来说,通过设置 `checkStrictly` 属性为 `true` 可以允许用户选择任意一级节点[^2]。 以下是完整的代码示例: ```html <template> <div> <!-- 级联选择器 --> <el-cascader v-model="selectedKeys" :options="options" :props="{ checkStrictly: true }" @change="handleChange" clearable style="width: 100%" /> </div> </template> <script> export default { data() { return { selectedKeys: [], // 当前选中的值 options: [ { value: '1', label: '选项一', children: [] }, { value: '2', label: '选项二', children: [] } ] // 数据源 }; }, methods: { handleChange(value) { console.log('当前选中的值:', value); } } }; </script> ``` #### 关键点解析 1. **`checkStrictly` 属性** 设置该属性为 `true` 后,可以打破父联动关系,使得用户能够选择任意一级节点而不仅仅是叶节点。 2. **事件监听 (`@change`)** 使用 `@change` 监听用户的操作行为,在回调函数中获取到用户的选择结果,执行相应的逻辑处理。 3. **移除 Radio 样式** 如果希望隐藏默认的单选框样式,则可以在自定义主题或者全局 CSS 文件中覆盖相关样式[^3]。例如: ```css .el-cascader-node__label { padding-left: 8px !important; } .el-radio__inner, .is-checked .el-radio__inner { display: none !important; } ``` 以上方法实现了当用户点击任意一级菜单项时立即返回所选内容的需求。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值