简记Vue弹窗组件eldaolog被父界面创建后,子界面created函数只调用一次的解决方案

最简单的解决方法:

在父容器的

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生命周期的函数。

如有差错,请各位指正
原文地址:https://www.cnblogs.com/Timeouting-Study/p/15587848.html