在实现功能的过程中,想用watch来监听el-dialog中的子组件,发现报错,一直以为是el-dialog的问题,其实是watch是用来监听数据变化的,而不是用来监听DOM元素或子组件的变化,因此watch是无法直接监听el-dialog中的子组件的变化
后来还是用了父子间的组件通讯,顺便写一下vue3 setup里,子传父 父传子
父组件
<div
class="DispatchIntercom"
:class="[dialogFullScreen ? 'fullscreen' : 'no_fullscreen']"
>
<el-dialog
v-show="showDI"
v-model="showDI"
:show-close="false"
>
<DispatchIntercom
v-show="showDI"
ref="DispatchIntercomRef"
:type="toVoiceIntercomType"
:row="selectRow"
:is-dialog="isDialog"
@controlFullScreen="controlFullScreen"
/>
</el-dialog>
</div>
子组件
export default {
name: 'VoiceIntercom',
props: {
type: {
type: String,
default: ''
},
row: {
type: String,
default: ''
},
isDialog: {
type: Boolean,
default: false
}
},
emits: ['controlFullScreen'],
setup(props, context){
function(()=>{
context.emit('controlFullScreen', value);
});
onMounted(()=>{
consloe.log(props.type);
});
}
...
}