gang_qi_xi_2 2024-10-01 09:08 采纳率: 50%
浏览 17

如何在vue中的el-dropdown 下拉菜单嵌套el-cascader-panel下,实现点击按钮后弹窗关闭

img


如图所示,如何在vue中的el-dropdown 下拉菜单嵌套el-cascader-panel下,实现点击按钮后弹窗关闭


<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>快速入门</title>
    <link rel="stylesheet" href="element-ui/lib/theme-chalk/index.css">
    <script src="js/vue.js"></script>
    <script src="element-ui/lib/index.js"></script>
</head>

<body>
    <br>
    <div id="div">
        <el-dropdown ref="downGroup" trigger="click">
            <span @click="relodOptions">下拉 </span>
            <el-dropdown-menu slot="dropdown" ref="dropdownRef">
                <el-cascader-panel ref="NDepartment" :options="options" v-model="value"
                    :props="{ checkStrictly: true, expandTrigger: 'hover' }"
                    @change="handleChange(value, node)"></el-cascader-panel>
            </el-dropdown-menu>
        </el-dropdown>
    </div>
</body>
<script>
    new Vue({
        el: "#div",
        data() {
            return {
                options: [],
                value: ""
            }
        }, methods: {
            relodOptions() {
                this.options = [{
                    value: 'zhinan',
                    label: '指南',

                }, {
                    value: 'zujian',
                    label: '组件',
                }, {
                    value: 'form',
                    label: 'Form',
                    children: [{
                        value: 'radio',
                        label: 'Radio 单选框'
                    }, {
                        value: 'checkbox',
                        label: 'Checkbox 多选框'
                    }, {
                        value: 'input',
                        label: 'Input 输入框'
                    }, {
                        value: 'input-number',
                        label: 'InputNumber 计数器'
                    }, {
                        value: 'select',
                        label: 'Select 选择器'
                    }, {
                        value: 'cascader',
                        label: 'Cascader 级联选择器'
                    }, {
                        value: 'switch',
                        label: 'Switch 开关'
                    }, {
                        value: 'slider',
                        label: 'Slider 滑块'
                    }, {
                        value: 'time-picker',
                        label: 'TimePicker 时间选择器'
                    }, {
                        value: 'date-picker',
                        label: 'DatePicker 日期选择器'
                    }, {
                        value: 'datetime-picker',
                        label: 'DateTimePicker 日期时间选择器'
                    }, {
                        value: 'upload',
                        label: 'Upload 上传'
                    }, {
                        value: 'rate',
                        label: 'Rate 评分'
                    }, {
                        value: 'form',
                        label: 'Form 表单'
                    }]
                }]
            },
            handleChange() {
                alert(1)
                this.$refs.dropdownRef.hide();
            }
        }

    });
</script>

结构如下:

img

  • 写回答

1条回答 默认 最新

  • 清水白石008 2024-10-07 06:23
    关注
    🕒上午好,题主!目前:🟢[在线]
    📢参考GPT-4o mini 模型、由清水白石008整理提供!
    📣今日金句:“成功是不断学习和成长的过程。”** — 亨利·福特
    

    在Vue中使用Element UI的el-dropdownel-cascader-panel时,如果您希望在点击按钮后关闭下拉菜单,可以通过调用el-dropdownhide方法来实现。以下是您提供的代码的修改版本,添加了在点击按钮后关闭下拉菜单的功能。

    修改后的代码示例

    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>快速入门</title>
        <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
        <script src="https://unpkg.com/vue/dist/vue.js"></script>
        <script src="https://unpkg.com/element-ui/lib/index.js"></script>
    </head>
    
    <body>
        <br>
        <div id="div">
            <el-dropdown ref="downGroup" trigger="click">
                <span @click="relodOptions">下拉 </span>
                <el-dropdown-menu slot="dropdown" ref="dropdownRef">
                    <el-cascader-panel ref="NDepartment" :options="options" v-model="value"
                        :props="{ checkStrictly: true, expandTrigger: 'hover' }"
                        @change="handleChange"></el-cascader-panel>
                    <el-button @click="closeDropdown">关闭下拉</el-button>
                </el-dropdown-menu>
            </el-dropdown>
        </div>
    </body>
    
    <script>
        new Vue({
            el: "#div",
            data() {
                return {
                    options: [],
                    value: ""
                }
            },
            methods: {
                relodOptions() {
                    this.options = [{
                        value: 'zhinan',
                        label: '指南',
                    }, {
                        value: 'zujian',
                        label: '组件',
                    }, {
                        value: 'form',
                        label: 'Form',
                        children: [{
                            value: 'radio',
                            label: 'Radio 单选框'
                        }, {
                            value: 'checkbox',
                            label: 'Checkbox 多选框'
                        }, {
                            value: 'input',
                            label: 'Input 输入框'
                        }, {
                            value: 'input-number',
                            label: 'InputNumber 计数器'
                        }, {
                            value: 'select',
                            label: 'Select 选择器'
                        }, {
                            value: 'cascader',
                            label: 'Cascader 级联选择器'
                        }, {
                            value: 'switch',
                            label: 'Switch 开关'
                        }, {
                            value: 'slider',
                            label: 'Slider 滑块'
                        }, {
                            value: 'time-picker',
                            label: 'TimePicker 时间选择器'
                        }, {
                            value: 'date-picker',
                            label: 'DatePicker 日期选择器'
                        }, {
                            value: 'datetime-picker',
                            label: 'DateTimePicker 日期时间选择器'
                        }, {
                            value: 'upload',
                            label: 'Upload 上传'
                        }, {
                            value: 'rate',
                            label: 'Rate 评分'
                        }, {
                            value: 'form',
                            label: 'Form 表单'
                        }]
                    }];
                },
                handleChange() {
                    alert(1);
                    this.closeDropdown(); // 关闭下拉菜单
                },
                closeDropdown() {
                    this.$refs.dropdownRef.hide(); // 关闭下拉菜单
                }
            }
        });
    </script>
    

    代码说明

    1. 关闭按钮:在el-dropdown-menu中添加了一个el-button,用于关闭下拉菜单。点击该按钮时会调用closeDropdown方法。

    2. 关闭下拉菜单的方法closeDropdown方法使用this.$refs.dropdownRef.hide()来关闭下拉菜单。

    3. handleChange中关闭下拉菜单:在handleChange方法中,您可以在处理完逻辑后调用closeDropdown方法来关闭下拉菜单。

    使用说明

    • 点击“下拉”按钮后,您可以选择级联选择器中的选项。
    • 选择后会弹出一个警告框,并且下拉菜单会关闭。
    • 点击“关闭下拉”按钮也会关闭下拉菜单。

    通过这种方式,您可以在Vue中实现el-dropdown下拉菜单嵌套el-cascader-panel,并在点击按钮后关闭下拉菜单。如果您有其他问题或需要进一步的帮助,请随时询问!

    评论

报告相同问题?

问题事件

  • 创建了问题 10月1日

悬赏问题

  • ¥50 大二的web前段开发静态网页纸质版
  • ¥15 robocopy文件复制
  • ¥15 unity安卓打包出现问题
  • ¥15 爱快路由器端口更改错误导致无法访问
  • ¥20 安装catkin时遇到了如下问题请问该如何解决呢
  • ¥15 VAE模型如何输出结果
  • ¥15 编译python程序为pyd文件报错:{"source code string cannot contain null bytes"
  • ¥20 关于#r语言#的问题:广义加行模型拟合曲线后如何求拐点
  • ¥15 fluent设置了自动保存后,会有几个时间点不保存
  • ¥20 激光照射到四象线探测器,通过液晶屏显示X、Y值