在这里就介绍一种,this.$emit('在父组件中,绑定的方法名称','方法的参数,可传多个,这个根据父所定义的方法参数而定')
在这里就写一个例子,孩子想吃苹果,叫爸爸帮忙买苹果的事件
父组件
<template> <div> <el-header>Header</el-header>
<!-- 这里的wantToEatAnApple 就等于孩子告诉爸爸,他想做的事情 --> <!-- 这里的goToBuySomeApples 就等于爸爸作出的回应,像这里孩子告诉爸爸想吃苹果,那爸爸就要去买些苹果回来 -->
<child @wantToEatApple="goToBuySomeApples"></child> </div> </template> <script>
<!-- 自定义的一个子组件 --> import child from '@/components/Child' export default { data () { return { } }, components: {
// 有些朋友觉得这里奇怪,为什么不是 child: child,是因为 这里是Key 跟value一样名字的时候的写法 child }, methods: {
// 这里的goToBuySomeApples 就是爸爸的回应,去买些苹果回来,可以带些参数,例如这里,只需要孩子告诉爸爸需要几个就行,还可以加上种类等等的参数 goToBuySomeApples (ammount) { //在这里就可以做些爸爸的去买苹果的动作了 } } } </script>
子组件
<template> <div>
<!-- 这里就等于点击事件,电话给爸爸 -->
<div @click="callFather">call father</div>
</div> </template> <script> export default { data () { return { } }, methods: { callFather () {
//重点在这里,this.$emit()方法就等于拿起电话,打电话给爸爸,告诉自己的需求,在这里告诉爸爸,想吃苹果'wantToEatApple',还要告诉他想吃多少个(参数)
//这样爸爸收到通知后,就会满足孩子的需求
this.$emit('wantToEatApple', 1) } } } </script>