Vue-组件自定义事件

71 阅读1分钟

使用场景:A是父组件,B是子组件,B想给A传数据,那么就要在A中给B绑定自定义事件(事件的回调在A中)

绑定自定义事件的方式


                                                                ❤️  第一种方式 ❤️

在父组件中:

<Student  @atguigu ='test' />   或  <Student  v-on:atguigu = 'test'>

methods:{ 

       //除了接受第一个参数,其他参数都放在数组里面

       test(name, ...params) {.....}  

}

                                                                ❤️  第一种方式 ❤️

在父组件中:

<Student ref ='demo'  />  

methods:{ 

       //除了接受第一个参数,其他参数都放在数组里面

       test(name, ...params) {.....}  

}

mounted() {  

       this.refs.demo.refs.demo.on('atguigu',this.test)  

子组件触发自定义事件


 this.$emit('atguigu',this.name, this.sex, 800)

// 子组件触发自定义事件的时候可以传递多个参数

解绑自定义事件


❤️   解绑一个自定义事件:this.$off('atguigu')

❤️   解绑多个自定义事件:this.$off(['atguigu', 'demo'])

❤️   解绑所有的自定义事件:this.$off()

组件上也可以绑定原生DOM事件,需要使用native修饰符 


<Student ref = "student" @click.native="show">

注意事项:

通过this.ref.xxx.ref.xxx.on('atguigu',回调)。绑定自定义事件时,回调要么配置在methods中,要么用箭头函数,否则this指向会出问题 

完整案例

App.vue父组件

.bgq { background-color: skyblue; padding: 5px; }

Student.vue子组件