在点击打开dialog时open事件的断点没有进去

问题描述:
在点击打开dialog时open事件的断点没有进去。
问题原因:
el-dialog标签上多了一个v-if,去掉v-if后open事件就可以进断点了。
看了element-ui的源码,是在visible为true时emit open事件,如果在标签上再加一个v-if后组件重新渲染了,visible就不起作用了,起作用的是v-if。

参考链接:https://juejin.cn/post/6971225093217189901


总结写法

写法很多,这里只简单记录部分

写法1:

Dialog

  • dialog用sync的prop
  • this.$emit("update:visible", false) or this.dialogVisible=false;来触发关闭
  • @open="onOpen"来进入
  • destroy-on-close 关闭时销毁dialog中的元素
  • :close-on-click-modal="false" 设置不通过esc关闭
<el-dialog
 title="扫描新设备配置"
 :visible.sync="dialogVisible"
 destroy-on-close
 :close-on-click-modal="false"
>
@PropSync("visible") dialogVisible!: boolean;

父组件

  • 用.sync同步变量
<batch-activate-config-dialog :visible.sync="activateVisible" />
  private activateVisible: boolean = false;
handleBatchActive() {
this.activateVisible = true;
}

 

写法2 区别主要在父组件调用时
dialog中

  • isDialogShow为data(){}中的自有变量
  • this.isDialogShow = false;关闭
  • open回调中事件处理

父组件
打开调用时this.$refs.warnImageDialog.isDialogShow = true;


写法3 
v-if + mounted 此时open回调失效

posted @ 2022-11-28 10:56  某星座的海星  阅读(1003)  评论(0)    收藏  举报