最简单的解决方法:
在父容器的
el-dialog外层再加上一层div,如下代码
<div v-if="dialogVisible"> <el-dialog> .... </el-dialog> </div>
变量handleAskKPIShow控制dialog是否显示,外层嵌套的v-if的作用就是让子界面中的created和destory函数在每次子界面打开时都触发一次。
开发场景是这样的,父界面像是门户类的,有多个表填填写打开按钮,然后每个表单大类分成子界面,父界面调用子界面的dialog。
在子界面提交表单或者退出之后,表单的值不能清空。因为控制子界面的生存(或者说是生命周期)在父界面中的created函数和destroy函数可以做用到子界面。
但是在子页面的中的Created函数和destory只会被调用一次;假设父界面是A.Vue;子界面是B.Vue;A中包含了B,在A中控制B打开时,A.created中关于B的初始化函数执行(这)和B.Vue(中的Created执行);关闭同理,但是在执行过后B.Vue就被实际注册在A.Vue中,通常来说逻辑一般在A中用一个可显示的flag控制子界面B的显示与否。那么当A让该控制变量更改,B界面就会被隐藏;A再次让B显示时,其实B是已经注册过在A中的,所以不会触发B中created生命周期的函数。