如何跟踪全局点击事件
Vue.js - How to track global click event
js并生成了这个代码的弹出窗口,当点击navbar-link
元素时,popover
将显示或隐藏。什么会很好是关闭popover
时,我点击屏幕上的任何地方(如果弹出窗口打开)。
有什么办法吗?
<template>
<div>
<span class="navbar-link" v-on:click="toggle()">
<i class="ion-android-notifications-none"></i>
</span>
<div class="popover" v-bind:class="{ 'open': opened }">
Hello, world!
</div>
</div>
</template>
<script>
export default{
data(){
return {
opened: false
}
},
methods: {
toggle: function () {
this.opened = !this.opened;
}
}
}
</script>
提前感谢:)
你仍然可以使用全局js函数并将事件绑定到document元素:
export default {
data () {
return {
opened: false
}
},
methods: {
toggle () {
if (this.opened) {
return this.hide()
}
return this.show()
},
show () {
this.opened = true;
setTimeout(() => document.addEventListener('click',this.hide), 0);
},
hide () {
this.opened = false;
document.removeEventListener('click',this.hide);
}
}
}
使用此解决方案,单击弹出窗口也将关闭它。所以你需要停止在弹出窗口上传播点击事件:
<div class="popover" v-bind:class="{ 'open': opened }" @click.stop>
Hello, world!
</div>
相关文章:
- 主干视图触发全局事件
- 通过进程使用 NodeJS 全局事件是个好主意吗?
- 关于性能,最好的方法是什么:setInterval()或body上的全局事件
- 通知全局事件组件的最佳方式
- FRP、角度和全局事件处理程序
- XML 声明中的 NativeScript 全局事件处理程序
- 访问Firefox中的全局事件对象
- 在单个全局事件处理程序中捕获所有单击事件是否是一个坏主意
- 独特的主干事件总线,也可以共享全局事件
- Dropzone JS全局事件
- 创建一个require js插件,监听骨干js全局事件
- Node.js请求模块全局事件
- Angular中的全局事件处理程序
- 如何在EaselJS中触发和监听全局事件
- jQuery全局事件监听器
- Jquery触发自定义全局事件
- 如何在使用requireJS时监听全局事件
- 在React.js中,我如何设置一个简单的全局事件系统来在组件之间进行通信?
- AngularJS:在指令中绑定到全局事件的最佳方法是什么
- 在jQuery 1.9上触发全局事件