前情
页面一打开就有一个提醒修改密码的弹框,如果这时候再有其他 messageBox 弹框的时候就会被覆盖,形成多个弹框排队等着处理的效果,第一个弹框永远在最前面,不能及时处理消息
分析
- ElementUI 的组件是挂载在 Vue 上的,而全局的 Vue 实例只有一个,所以只能一个一个地弹出 MessageBox
解决方法: 将 MessageBox 封装成一个插件,修改密码的弹框使用插件,其他地方正常使用 ElementUI 的 MessageBox
- 最终效果
代码
MsgBox.vue
<template>
<div v-show="visible" class="message-box">
<div class="box">
<div class="title">
<div class="box-title">{
{
title}}</div>
<span class="cancel" @click="clickCancel"><svg-icon class="Msgcancel" icon-class="Msgcancel"></svg-icon></span>
</div>
<div class="content">
<span class="icon"><svg-icon icon-class="Msgalarm" class="Msgalarm"></svg-icon></span>
<div class="box-content">{
{
content}}</div>
</div>
<div class="box-btns">
<button @click="clickConfirm" class="btn-confirm"