javascript - Vuejs 组件没有响应“mouseleave”事件
问题描述
我正在使用动态组件设置导航栏导航;这样,当您将鼠标悬停在导航栏链接上时,会显示一个适当的组件,而当您离开该组件时,该组件就会消失。组件确实出现了,但在“鼠标离开”时它不会消失或响应事件。示例代码如下所示。
我尝试了其他事件,例如@click
但仍然没有响应。
<keep-alive>
<component :is="selectedComponent" v-if="showComponent" @mouseleave="showComponent = false"></component>
</keep-alive>
我希望组件消失mouseleave
解决方案
当您在组件上放置事件侦听器时,它只会侦听该组件发出的事件,使用$emit
. 因此,如果您不调用this.$emit('mouseleave')
组件,则永远不会调用该侦听器。
您可以在内部侦听事件并发出它,但更可能的是您正在寻找的是native
修饰符,它将 DOM 事件直接附加到组件的最外层元素上:
@mouseleave.native="showComponent = false"
https://vuejs.org/v2/guide/components-custom-events.html#Binding-Native-Events-to-Components
请注意,在这方面,组件与原生 HTML 元素不同。如果您使用的是 a,您所做的工作会很好,<div>
但它不适用于组件。
推荐阅读
- c# - ASP.Net C#:单选按钮不会触发 OnCheckedChanged 事件
- python - Django记录服务器和命令之间的线程安全
- php - PHP for 和循环数组
- javascript - 当有 2 个数组要检查或比较时使用 javascript 过滤
- angular2-services - 在 Angular 2 中 Observales 返回多个值而 Promises 只返回一个值的声明是什么意思?
- python - 2 个 Pandas DF 的矩阵乘法
- python - 在python中调用带有参数的类函数
- bash - 在 Bash 中的 IF/Then 语句中确定数组是否有元素
- html - 如何为重用html属性制作自定义指令?
- csv - Spark读取多个CSV文件,每个文件一个分区