vue2.0在父组件内调用子组件自定义的方法
- 情景:使用elemengui框架中,当有多个dialog弹出框时,需要在关闭父组件dialog弹出框前,先关闭子组件的弹出框
/*父组件:发送事件*/
<template>
<el-dialog :before-close="closeDialog">
<child ref="childComponent"></child>
</el-dialog>
</template>
<script>
export default {
data(){
return {}
},
methods:{
closeDialog(done){
this.$refs.childComponent.$emit('closeDialogchild')
done()
}
}
}
</script>
/*子组件关闭对话框:设置隐藏*/
<template>
<el-dialog :visible.sync="visibledialog">子组件</el-dialog>
</template>
<script>
export default {
data(){
return {
visibledialog:‘true’
}
},
mounted(){
this.$on('closeDialogchild',()=>{
this.visibledialog="false"
})
}
}
</script>
- 实现方式:父组件使用$refs获取到子组件的实例,通过$emit触发子组件的自定义事件;子组件通过$on监听到该事件后,执行子组件的内部逻辑处理。