Vue组件自定义事件、全局事件总线、消息订阅与发布(pubsub)、$nextTick

1. 组件自定义事件

  1. 一种组件间通信的方式,适用于子组件给父组件传递数据。在父组件中给子组件绑定自定义事件,事件的触发在子组件,事件的回调函数在父组件中
  2. 绑定自定义事件:
    1. 第一种方式,在父组件中:<School @myEvent.once="callBackFunc"/>(只能被触发一次)或<School v-on:myEvent="callBackFunc"/>

    2. 第二种方式,在父组件中:先用<School ref="school "/>给子组件注册引用信息,这样就能获取到Student的组件实例对象vc。然后再在父组件中通过生命周期函数mounted进行绑定自定义事件

		mounted() {
		    // this.$refs.student.$once(......)    // 只能被触发一次
		    // 直接在这里实现callBackFunc,如果是普通函数,则普通函数里面的this是Student组件实例对象vc
		    // 如果是箭头函数,箭头函数没有this,则向外找,箭头函数里面的this是父组件的实例对象
			this.$refs.student.$on('myEvent', this.callBackFunc)
		}
  1. 触发自定义事件:在子组件中:this.$emit('myEvent', 'param1', param2)

  2. 事件回调函数:在父组件中:callBackFunc(param1, param2) {…}

  3. 解绑自定义事件:在子组件中:this.$off('myEvent')(解绑一个)、this.$off(['myEvent'])(解绑多个)、this.$off()(解绑所有)

  4. 在父组件中给子组件上绑定原生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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值