1. 组件自定义事件
- 一种组件间通信的方式,适用于子组件给父组件传递数据。在父组件中给子组件绑定自定义事件,事件的触发在子组件,事件的回调函数在父组件中
- 绑定自定义事件:
-
第一种方式,在父组件中:
<School @myEvent.once="callBackFunc"/>
(只能被触发一次)或<School v-on:myEvent="callBackFunc"/>
-
第二种方式,在父组件中:先用
<School ref="school "/>
给子组件注册引用信息,这样就能获取到Student的组件实例对象vc。然后再在父组件中通过生命周期函数mounted进行绑定自定义事件
-
mounted() {
// this.$refs.student.$once(......) // 只能被触发一次
// 直接在这里实现callBackFunc,如果是普通函数,则普通函数里面的this是Student组件实例对象vc
// 如果是箭头函数,箭头函数没有this,则向外找,箭头函数里面的this是父组件的实例对象
this.$refs.student.$on('myEvent', this.callBackFunc)
}
-
触发自定义事件:在子组件中:
this.$emit('myEvent', 'param1', param2)
-
事件回调函数:在父组件中:callBackFunc(param1, param2) {…}
-
解绑自定义事件:在子组件中:
this.$off('myEvent')
(解绑一个)、this.$off(['myEvent'])
(解绑多个)、this.$off()
(解绑所有) -
在父组件中给子组件上绑定原生DOM事件,使用
<School @click.native="callBackFunc"/>
使用示例:
App.vue:绑定student2App组件自定义事件,事件的回调函数是getStudentName
<template>
<div>
<h1>App组件接收Student组件的学生姓名是:{
{studentName}}</h1>
<!-- 父组件给子组件绑定一个自定义事件 -->
<Student ref="student"/>
</div>
</template>
<script>
import Student from './components/Student'
export default {
name:'App',
components:{Student},
data() {
return