今天在写Vue时遇到一个用element-ui的dialog时,在一个页面有多个地方同时应用了同一个dialog,但是发现虽然设置了destroy-on-close=true的参数依旧无法让数据在销毁时候重置
尝试了很多方法,包括在el-dialog上设置v-if,

<el-dialog
            :title="title"
            v-if="centerDetailVisible"
            :visible.sync="centerDetailVisible"
            :destroy-on-close="true"> //这样子是不行的

真的要重新渲染只能:

location.reload();

后来换一个思路,其实并不需要把el-dialog完全销毁,只要把数据重置一下就可以了,于是改成:

最终代码:

html:

<el-dialog
            :title="title"
            v-if="centerDetailVisible"
            :visible.sync="centerDetailVisible"
            @close="handleClose"
            center
    >

JavaScript:

handleClose(){
                Object.assign(this.$data, this.$options.data())
            },

用@close 方法,大功搞成。这样子以来,包括表单等七七八八的数据全部都重置了(ps:之前看其他文章试的:this.$data = this.$options.data();也不好用

Logo

前往低代码交流专区

更多推荐