【发布时间】:2017-12-23 22:26:20
【问题描述】:
我有一个包含多个子组件的父组件
<grid>
<cell></cell>
<cell></cell>
<cell></cell>
</grid>
我的单元格组件发出一个带有有效负载的事件,说它正在被编辑
this.$emit('editing',cellId)
我知道我可以像这样捕捉事件
<cell @editing="do something"></cell> 或使用EventBus.$on('editing') 捕获,我也不想使用root 侦听器this.$root.$on('editing')
但是因为它是父组件,当父组件被挂载时,我如何监听“编辑”事件
mounted: function(){
this.$on('editing',dosomething)
}
为什么挂载了父组件后无法添加监听?
【问题讨论】:
-
您的
mounted函数正在侦听父组件上的事件。子组件在自己身上发出事件。你的目标是什么,为什么不想使用<cell @editing="...">形式的事件处理? -
我有点不清楚你的目标是什么。如果可能,请阐明您的目标。但是如果你想在父组件中监听
editing事件,你可以在mounted hook中使用EventBus:EventBus.$on('editing') -
我想从概念上理解这一点以及儿童中的事件是如何工作的。我知道的最好的方法是
<cell @editing="..."不使用 eventBus 或发射到 $root 那么在mounted中监听和在组件@editing上监听有什么区别 -
@RoyJ - 我不认为这是正确的:
Your mounted function is listening for events on the parent component。您不能向孩子发出事件,它会发生在props上。mounted函数实际上监听当前实例内的事件。 -
@AndreyPopov 当前实例是父组件。我使用“parent”来区分他的父组件和子组件,而不是我正在谈论的组件和它的父组件。
标签: javascript vue.js vuejs2 vue-component