VUE2对话框没弹出来的时候通过ref找不到对话框内部的元素?

<el-dialog :title="title" :visible.sync="open" width="500px" v-dialogDrag append-to-body>

<input type="file" ref="photoFile" accept="image/jpeg,image/jpg,image/png" multiple @change="selectFile($event)"/>

<img ref="preView" style="max-width:80%"/>

....

如题,我想对话框弹出之前,想清空input,img的内容

      this.$refs.preView.src ="";

this.$refs.photoFile.value="";

this.$refs里找不到preView,photoFile
这个是啥子原理


回答:

这是因为对话框弹出之前没这个这个DOM, 既然都使用Vue了, 为什么还要操作DOM呢 ,完全可以这么写以img举例, :
<img :src="imgSrc" style="max-width:80%"/>
弹出前:this.imgSrc = ''


回答:

在 Vue 2 中,当对话框还没有弹出来时,其内部的元素是无法通过 ref 找到的。这是因为 Vue 组件在初始化时,还没有被挂载到 DOM 上,所以无法访问到组件内部的 DOM 元素。

如果你需要在对话框弹出后访问对话框内部的元素,可以考虑在对话框的 shown 事件中进行操作,该事件会在对话框显示出来后被触发。例如:

vue
Copy code
<template>
<el-dialog :visible.sync="dialogVisible" @shown="onDialogShown">

<div ref="dialogContent">

<!-- 对话框内容 -->

</div>

</el-dialog>
</template>

<script>
export default {
data() {

return {

dialogVisible: false

}

},
methods: {

onDialogShown() {

// 对话框显示后,可以访问对话框内部的元素

const dialogContent = this.$refs.dialogContent

// ...

}

}
}
</script>
在上面的示例中,我们在对话框的 shown 事件中访问了对话框内部的元素,通过 $refs 获取了对话框内容的 DOM 元素。当对话框显示出来后,该事件会被触发,我们就可以在事件处理函数中访问对话框内部的元素了。

以上是 VUE2对话框没弹出来的时候通过ref找不到对话框内部的元素? 的全部内容, 来源链接: utcz.com/p/933742.html

回到顶部