Vue学习:Vue中的组件自定义事件

一般情况下,可以通过props实现父组件传递数据给子组件,通过vue的组件的自定义事件也可以实现子组件和父组件之间的通信。

通过使用$on(eventName) 监听事件,使用 $emit(eventName) 触发事件,$off(eventName)移出自定义事件监听器。

自定义组件传递数据的两种写法

1、通过父组件给子组件绑定一个自定义事件实现:子给父传递数据(使用@或v-on):

父组件中接收参数:

<StudentName name="李四" sex="男" :age="18" v-on:atlrn="getStudentName"></StudentName>

getStudentName(name){

console.log("app收到了学生名",name);

}

子组件中传递参数:

<button @click="sendStudentName">把学生名给app</button>

 methods:{

            sendStudentName(){

                //$emit触发studentName组件实例身上的atlrn事件

                this.$emit('atlrn',this.name)

            }

        }

2、通过父组件给子组件绑定一个自定义事件实现:子给父传递数据(使用ref):

父组件中:

<StudentName  name="李四" sex="男" :age="18" ref="student"></StudentName>

mounted(){

    this.$refs.student.$on('atlrn',this.getStudentName)

  }

子组件中:

methods:{

            sendStudentName(){

                //$emit触发studentName组件实例身上的atlrn事件

                this.$emit('atlrn',this.name)

            }

        }

相较于第一种方式,第二种方式更灵活一些。

解绑自定义事件:

通过使用$off(eventName)解绑一个自定义事件。

当解绑多个自定义事件时,需要将两个自定义事件放入一个数组中,然后使用$off(【eventName1,eventName2】)解绑两个自定义事件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值