问题:最近在项目开发中,遇到了一个问题,在el-dialog 弹框中,调用了详情页面组件,然后点击按钮让弹框出现,发现只能触发一次详情组件中的mounted钩子里的方法,再次点击弹框出现,就不在走mounted里了
经过多次调试,终于找到原因了,这是element的dialog组件本身存在的问题, dialog作为父组件调用子组件时,仅仅只渲染了一次,就不在进行渲染。
解决方法:
在el-dialog标签外边加上一个div标签,加上v-if ,条件和dialog出现的条件一致,这样每次渲染完都会进行摧毁,再重新调用组件,每次都走mounted里了。。。。。。。
代码示例:
<div v-if="previewFilePop">
<el-dialog title="流程匹配分析结果预览" :visible.sync="previewFilePop" width="80%" v-loading="fullscreenLoading" @close="closePopClick">
<span>
<detail id="downloadDetailFile" :detailItem="detailItem" @loadingClose="loadingClose"></detail>
</span>
<span slot="footer" class="dialog-footer">
<el-button @click="closePopClick">取 消</el-button>
<el-button type="primary" @click="downloadFileSure">下载pdf文件</el-button>
</span>
</el-dialog>
</div>