我想知道Vue2的$emit是如何工作的?
在它的API(https://vuejs.org/v2/api/#vm-emit)上,它说:
在当前实例上触发事件。任何额外的参数都将被传递到侦听器的回调函数中。
如果当前实例是指已定义的组件,而其主要用途是向父组件发送信号(https://vuejs.org/v2/guide/components.html#Sending-Messages-to-Parents-with-Events)
我想知道如何理解这一点(事件是如何传递的,这让我很困惑)?
谢谢
发布于 2018-06-04 07:38:23
简单地说,$emit
在一个组件中注册一个事件,然后您就可以在使用该组件的其他地方侦听该事件。
假设你有一个Child.vue
,并且在这个组件的某个地方,你有:
.$emit('some-event')
然后,您可以在重用Child
组件时侦听此事件,例如,在另一个组件SomeComponent.vue
中,您可以这样做:
<template>
<child @some-event="doSomething"></child>
</template>
因此,这里的事件是在子组件中触发的,但您可以使用doSomething
决定在父组件中执行什么操作。希望这是有意义的!
发布于 2018-06-04 10:33:27
文档上的措辞可能会让一些人感到困惑。
也许“让vm
当前实例调度一个事件”这几行的话会更清楚一些?
最后,它只是一个经典的发布/订阅模式:您的组件实例发出/分派/激发一个事件,而其他组件(通常是父组件)侦听/订阅(v-on
/ @
)该事件。
https://stackoverflow.com/questions/50671516
复制相似问题