使用场景:

在Vue组件中点击某元素之外的地方移除该元素

需求:

如上图所示,“用户列表”页面有三个Vue组件组成,分别是“菜单组件”,“导航组件”和“列表组件”。其中“列表组件”中包含一个“下拉菜单”,当我们点击“下拉菜单”以外的区域隐藏下拉菜单。

解决方法一:

出现“下拉菜单”的同时,建一个透明的遮罩层,然后只有“下拉菜单”可以点,点击遮罩层就隐藏。

缺点:z-index层数要控制好,还有就是如果点击其他功能按钮,会失效,因为有遮罩层,导致要点击两次才有效。

解决方法二:

局部监听,给“列表组件”最外层的盒子加个点击事件,隐藏下拉菜单。并且对“下拉菜单”的事件要阻止事件冒泡。

缺点:点击“列表组件”区域有效,点击“菜单组件”和“导航组件”区域无效。

解决方法三(推荐):

第一步:定义Vue全局点击函数

// 定义全局点击函数
Vue.prototype.globalClick = function (callback) {document.getElementById('main').onclick = function () {callback();};
};

tips:
1、参数为点击的回调函数。
2、Vue中通过getElementsByTagName获取不到body节点,还不知道是什么原因。

第二步:在组件中监听全局的点击事件

mounted: function () {this.globalClick(this.moreSetupMenuRemove);
}

tips:mounted是Vue生命周期钩子中的DOM渲染完成阶段。

第三步:进行操作

// 移除操作
moreSetupMenuRemove () {this.$refs.moreSetupMenu.style.display = 'none';
},

如果有更好的方法,欢迎交流!

在Vue组件中获取全局的点击事件相关推荐

  1. vue 获取id元素_.vue组件中获取DOM元素问题

    一.问题引入 原项目把一块内容直接写在了模块中(浏览器显示的一整个页面),现在想把它提成一个单独组件,而且把其中使用document.getElementById('id')改为ref获取元素的形式. ...

  2. vue 把组件挂载到视图_vue.js中,在一个vue组件中,想通过点击按钮,才加载另外一个目标vue组件,要怎么实现?...

    展开全部 { data: { showcom: false } methods: { onclick: function () { this.showcom = true; } } } Vue.js( ...

  3. Vuex---在 Vue 组件中获得 Vuex 状态state

    Vuex使用单一状态树(一个对象就包含了全部的应用层级状态),它作为唯一数据源存在,每个应用仅仅有一个store实例. 单一状态树使得我们能够直接定位任一特定的状态片段,在调试过程中也能轻易地取得整个 ...

  4. vue组件中的样式属性:scoped,解决在父组件中无法修改子组件样式问题

    Scoped CSS规范是Web组件产生不污染其他组件,也不被其他组件污染的CSS规范. vue组件中的style标签标有scoped属性时表明style里的css样式只适用于当前组件元素,它是通过使 ...

  5. java socket中属性详解_前端开发:关于Vue组件中的data属性值是函数而不是对象的详解...

    最近在搞关于前端开发的基础知识归纳,发现了不少经典知识点,那么本篇博文就来分享一个经典的知识点:Vue组件中的data属性值为什么是函数而不是对象.首先来了解一下Vue组件的使用理念:在Vue组件使用 ...

  6. Vue项目中获取数据后使用swiper轮播,无法轮播且 autoplay 和 loop 失效问题!

    Vue项目中获取数据后使用swiper轮播,无法轮播且 autoplay 和 loop 失效问题! 问题表现:轮播组件显示第一张图,可拖动但无法切换到下一张图.但是F12控制台切换屏幕后能正常轮播但无 ...

  7. vue res返回html,vue 组件内获取actions的response方式

    最近使用在学习使用vuex,想利用vuex集中管理状态.在和后台进行数据交互的时候,必然会涉及接口的调用,此类异步操作,通常写在action里面: import Vue from 'vue'; imp ...

  8. 从父组件中获取子组件的值

    父组件中获取子组件中的值(三种的方式) 1. this.$root.子组件中的值 2. this.$parent.子值 $parent是一级一级访问的,如果子组件多的话需要多个$parent3. &l ...

  9. 六十二、Js中的冒泡和捕获点击事件和Vue组件绑定原生事件

    2020/10/18 . 周日.今天又是奋斗的一天. @Author:Runsen @Date:2020/10/18 写在前面:我是「Runsen」,热爱技术.热爱开源.热爱编程.技术是开源的.知识是 ...

最新文章

  1. Android中Parcel的分析和使用
  2. HTML样式以及使用
  3. SAP MM 物料库存转固定资产,报错:You cannot post to asset in company code 1900 fiscal year 2021
  4. Tomcat windows下安装
  5. java 双调旅行商 hamiltonian,双调欧几里得旅行商问题(TSP)
  6. led灯光衰怎么解决_什么是LED光衰,光衰怎么解决?
  7. .NET:如何让线程支持超时?
  8. java 图片分段上传_java 分段读取文件 并通过HTTP上传
  9. SharedPreferences详解
  10. C++ STL string与算法
  11. linux检测硬件驱动,linux查看硬件信息及驱动设备相关整理
  12. 计算机如何驱动无线网络,win7焦头烂额的无线网卡驱动程序安装问题!求帮助!...
  13. 不止鸿蒙 OS,华为的备用操作系统还有“极光”?
  14. 攻击者巧妙滥用谷歌 DoH 下载恶意软件
  15. flink入门案例之WordCount
  16. 【洛谷 SP8093】 JZPGYZ - Sevenk Love Oimaster(后缀自动机)
  17. 金融期货具体的开户条件
  18. cpu发热测试软件,如何检测CPU的温度?这些软件少不了
  19. java 新词发现,Java新词发现算法码源之使用
  20. Kotlin的SAM转换

热门文章

  1. 浅谈 JavaScriptCore
  2. asp.net 导出excel带图片
  3. 系统架构师学习笔记_第三章_连载
  4. DB2: 为DB2数据库创建新用户帐户并为其分配特定特权
  5. saki4510t的UVCCamera设置匹配android7.1.1 sdk等信息后编译出错
  6. android_N项目(高通平台 CTS修改总结
  7. WINCE6.0在应用程序中调用控制面板的应用
  8. java如何保证redis设置过期时间的原子性_2020年4月Redis面试题和答案整理
  9. ListMapSet的操作和遍历
  10. Android:Plug-in com.android.ide.eclipse.adt was unable to load class android