我想知道Vue2的$ emit是如何起作用的?
在其API(https://vuejs.org/v2/api/#vm-emit)上,它说:
在当前实例上触发事件。任何其他参数 将被传递给监听器的回调函数。
如果当前实例意味着定义了组件,而其主要用途是向父母发送信号(https://vuejs.org/v2/guide/components.html#Sending-Messages-to-Parents-with-Events)
我想知道如何理解这一点(事件通过的方式对我很困惑)?
感谢
答案 0 :(得分:0)
简单地说,$emit
在一个组件中注册一个事件,然后你可以在任何使用该组件的地方听这个事件。
假如你在这个组件中有Child.vue
和某处,你做了:
.$emit('some-event')
然后,您可以在重用Child
组件时收听此事件,例如在另一个组件SomeComponent.vue
中,您可以这样做:
<template>
<child @some-event="doSomething"></child>
</template>
所以这里的事件是在子组件中触发的,但您决定在父组件中使用doSomething
做什么。希望这是有道理的!
答案 1 :(得分:0)
文档上的措辞可能会让某些人感到困惑。
可能有以下几点:&#34;使vm
当前实例调度事件&#34;会更清楚吗?
最后,它只是一个经典的pub / sub模式:组件实例发出/调度/触发事件,其他组件(通常是父组件)监听/订阅(v-on
/ {{1} })到那个事件。