【解决】el-message消息弹框的显示被el-dialog覆盖(z-index导致)

方案一:设置el-message的z-index为更大值即可。

// to fix el-message弹框被el-dialog覆盖的问题。
.el-message {
  z-index: 99999999 !important;
}

方案二:设置el-dialog的z-index为较小值即可。

<!--【close-on-click-modal】:点击空白处是否关闭弹框; -->
<el-dialog 
    :title="title" 
    :visible.sync="visible" 
    width="35%"
    z-index="1000"
    :destroy-on-close="true" 
    :close-on-click-modal="false" 
    :show-close="!loading" 
    :before-close="closeDg">
</el-dialog>

### 如何在 Vue 中使用 mitt 触发 el-dialog 组件的操作 #### 使用 `mitt` 进行事件派发和监听 为了实现在 Vue 应用中利用 `mitt` 来控制 Element Plus 的 `el-dialog` 组件显示与否,可以通过创建全局事件总线的方式完成。下面是一个具体的实现案例。 首先,在项目入口文件(通常是 main.js 或者类似的初始化脚本)引入并配置 mitt: ```javascript import { createApp } from 'vue' import App from './App.vue' import mitt from 'mitt' const app = createApp(App) // 创建一个 mitt 实例作为全局事件总线 app.config.globalProperties.$Bus = mitt() app.mount('#app') ``` 接着是在想要触发对话打开行为的地方定义好发送消息的方法,比如在一个名为 A.vue 的组件里设置按钮点击后发出特定信号给其他地方监听[^3]。 对于接收方来说,则需要在其生命周期钩子里注册对该信号的关注,并据此改变自身的状态从而影响视图层面上的表现形式。这里以展示/隐藏 Dialog 为例说明如何操作: ```html <!-- B.vue --> <template> <div> <!-- ... 其他 HTML 结构... --> <el-button type="primary" @click="openDialog">Open Dialog</el-button> <el-dialog :visible.sync="dialogVisible"> This is a dialog. </el-dialog> </div> </template> <script> export default { data() { return { dialogVisible: false, }; }, created() { this.$Bus.on('send-message', () => { this.dialogVisible = true; }); }, beforeDestroy() { // 移除监听器防止内存泄漏 this.$Bus.off('send-message'); }, methods: { openDialog() { this.dialogVisible = true; } } }; </script> ``` 上述代码展示了怎样借助于 mitt 和 `$Bus` 对象建立起了两个不同组件间的联系机制——当某个条件满足时(即接收到指定的消息),就会更新本地的数据属性进而达到控制模态窗口显隐的效果[^1]。 此外需要注意的是,在实际开发过程中应当合理规划各个模块之间的依赖关系以及交互逻辑,避免不必要的复杂度增加维护成本;同时也应该考虑到性能优化方面的要求,适时清理不再使用的订阅项以免造成潜在的风险隐患[^2]。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值