如何解决Element UI el-dialog打开一次后无法再次打开问题

 更新时间:2024年02月29日 14:15:57   作者:大龄女程序员路在何方  
这篇文章主要介绍了如何解决Element UI el-dialog打开一次后无法再次打开问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

Element UI el-dialog打开一次后无法再次打开

APP.vue

<template>
    <div>
        我是子组件
        <el-button type="primary" size="mini" @click="openA">打开ADialog</el-button>
        <ADialog :avisible="visible" :key="key">
        </ADialog>
    </div>
</template>
 
<script>
import ADialog from '@/components/ADialog'
export default {
    data() {
        return {
            visible:false,
            key:Math.random(100)*100
        };
    },
    components:{
        ADialog
    },
    methods:{
        openA(){
            this.key = this.key +1
            this.visible = true
        }
    }
}
</script>
 
<style>
 
</style>

ADialog.vue

<template>
  <div v-if="visable">
    <el-dialog
      title="我是Adialog"
      :visible.sync="visable"
      width="30%"
      @close="handlerClose"
    >
      <span>我要打开B了</span>
      <el-button   type="primary" size="default" @click="openB"
        >打开Bdialog</el-button
      >
 
      <span slot="footer">
        <el-button @click="visable = false">Cancel</el-button>
        <el-button type="primary" @click="handlerOK">OK</el-button>
      </span>
    </el-dialog>
    <BDialog :bvisable="bvisable" :key="key"></BDialog>
  </div>
</template>
 
<script>
import BDialog from "@/components/BDialog";
export default {
  props: ["avisible"],
  data() {
    return {
      visable: this.avisible,
      bvisable: false,
      key:Math.random(100)*100
    };
  },
  components: { BDialog },
  methods: {
    handlerClose() {
      this.visable = false;
    },
    handlerOK() {
      this.visable = false;
    },
    openB(){
        this.key = this.key+1
        this.bvisable = true
        this.$forceUpdate()
    }
  },
};
</script>
 
<style>
</style>

BDialog.vue

<template>
  <div v-if="visiable">
        <el-dialog
            title="我是Bdialog"
            :visible.sync="visiable"
            width="20%"
            @close="handlerClose">
            <span></span>
            <span slot="footer">
                <el-button @click="visiable = false">Cancel</el-button>
                <el-button  @click="ok">OK</el-button>
            </span>
        </el-dialog>
        
  </div>
</template>
 
<script>
export default {
    props:[
        "bvisable"
    ],
    data() {
        return {
            visiable: this.bvisable,
        };
    },
    methods:{
        handlerClose(){
            this.visiable = false
        },
        ok(){
            this.visiable = false
        }
 
    }
}
</script>
 
<style>
 
</style>

在引用子组件的过程中加上:key就是给每一个vnode的唯一id,新的dialog就可以展示出来

父组件dialog中加上

子组件的dialog中加上

子组件调用的过程中加上:key

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 利用vue3仿苹果系统侧边消息提示效果实例

    利用vue3仿苹果系统侧边消息提示效果实例

    这篇文章主要给大家介绍了关于如何利用vue3仿苹果系统侧边消息提示效果的相关资料,文中通过实例代码以及图文介绍的非常详细,对大家学习或者使用vue3具有一定的参考学习价值,需要的朋友可以参考下
    2021-12-12
  • 尤大大新活petite-vue的实现

    尤大大新活petite-vue的实现

    打开尤大大的GitHub,发现多了个叫 petite-vue 的东西,Vue3 和 Vite 还没学完呢,又开始整新东西了?本文就来介绍一下
    2021-07-07
  • 你不可不知的Vue.js列表渲染详解

    你不可不知的Vue.js列表渲染详解

    这篇文章主要给大家介绍了关于你不可不知的Vue.js列表渲染的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Vue.js具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-10-10
  • vue src动态加载请求获取图片的方法

    vue src动态加载请求获取图片的方法

    这篇文章主要为大家详细介绍了vue src动态加载请求获取图片的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-10-10
  • 在vue中实现echarts随窗体变化

    在vue中实现echarts随窗体变化

    这篇文章主要介绍了在vue中实现echarts随窗体变化,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • vue使用路由的query配置项时清除地址栏的参数案例详解

    vue使用路由的query配置项时清除地址栏的参数案例详解

    这篇文章主要介绍了vue使用路由的query配置项时如何清除地址栏的参数,本文通过案例给大家分享完美解决方案,需要的朋友可以参考下
    2023-09-09
  • 详解vue中localStorage的使用方法

    详解vue中localStorage的使用方法

    这篇文章主要介绍了详解vue中localStorage的使用方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-11-11
  • 在Vue-cli里应用Vuex的state和mutations方法

    在Vue-cli里应用Vuex的state和mutations方法

    今天小编就为大家分享一篇在Vue-cli里应用Vuex的state和mutations方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-09-09
  • Vue2中如何使用全局事件总线实现任意组件间通信

    Vue2中如何使用全局事件总线实现任意组件间通信

    全局事件总线就是一种组件间通信的方式,适用于任意组件间通信,下面这篇文章主要给大家介绍了关于Vue2中如何使用全局事件总线实现任意组件间通信的相关资料,需要的朋友可以参考下
    2022-12-12
  • Vue 实现前进刷新后退不刷新的效果

    Vue 实现前进刷新后退不刷新的效果

    这篇文章主要介绍了Vue 实现前进刷新后退不刷新的效果,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-06-06

最新评论