vue.js - 我们如何识别整个项目(许多页面)中任何地方发生的 vue popover 触发器?
问题描述
我在我的项目中到处使用 vb-popover(很多页面)。每当我们单击或悬停在任何页面上的弹出按钮上时,我都需要知道,那么我们如何知道触发发生了。
我想知道而不在该元素的属性上写任何事件(弹出框)。
有什么办法吗?
解决方案
您可以在 上监听事件$root
,因为每个弹出框在$root
显示时都会触发相同的事件。
this.$root.$on('bv::popover::show', bvEventObj => {
console.log('bvEventObj:', bvEventObj)
})
参考:https ://bootstrap-vue.org/docs/components/popover#listening-to-popover-changes-via-root-events
您还可以侦听除bv::popover::show
、likebv::popover::hide
或之外的其他事件bv::popover::enabled
。您可以在此处查看完整列表。
new Vue({
el: '#app',
created() {
// Listen for an event on the root.
this.$root.$on('bv::popover::show', () => {
console.log('Popover Opened')
})
}
})
<link href="https://unpkg.com/bootstrap@4.5.3/dist/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://unpkg.com/vue@2.6.12/dist/vue.min.js"></script>
<script src="https://unpkg.com/bootstrap-vue@2.21.2/dist/bootstrap-vue.js"></script>
<div id="app">
<b-btn v-b-popover.hover.bottom="'Button 1'">Button 1</b-btn>
<b-btn v-b-popover.hover.bottom="'Button 2'">Button 2</b-btn>
<b-btn v-b-popover.hover.bottom="'Button 3'">Button 3</b-btn>
</div>
推荐阅读
- html - 尝试将表单输入字段放置在 3 列中
- python - 为什么我的 Builder.load_file() 是 Nonetype?
- javascript - Angular DatePipe 打印日期时间
- android - 我们可以使用现有的密钥库和应用程序签名密钥作为私钥,而新的密钥库文件用于生成用于谷歌播放应用程序签名的上传密钥
- firefox - 在 Firefox 中使用 Jitsi Meet 安装
- r - 过滤R中的第一行
- angular - Jasmine 模拟调用服务而不是模拟值
- json - 选择哪些流以及将它们正确放置在何处以处理 url 地址、接收这些图像数据并将它们显示在 tableview 中?
- python - 将 Python 代码转换为 DLL 可导出代码的方法是什么?
- javascript - 如何将函数添加到 JavaScript switch 语句中?