el-popover如何通过js手动控制弹出框显示、隐藏

 更新时间:2023年12月12日 14:52:42   作者:MtiredM  
最近项目中多次用到了Popover弹出框,下面这篇文章主要给大家介绍了关于el-popover如何通过js手动控制弹出框显示、隐藏的相关资料,需要的朋友可以参考下

说明

element ui 2.x中,el-popover的显示隐藏有4种触发方式:click/focus/hover/manual,分别是点击/聚焦/悬浮/手动,正常情况这几个触发方式已经能满足大部分需求,但有些业务场景需要通过代码自动触发弹框展示

例如:在后台请求响应返回后,自动打开弹框展示内容,这时我们如果使用的click(click已验证,focus/hover未验证)触发方式,则无法通过js显示弹框

如果使用manual触发方式,主动添加点击事件,可以通过js显示弹框,但无法实现点击空白处关闭弹框,但此方案已基本接近最终需求,针对点击空白处关闭提供全局点击事件处理即可,具体示例如下:

代码示例

<el-popover
  ref="myPopover"
  :value="showPopover"
  placement="bottom"
  width="550"
  trigger="manual"
  :open-delay="500"
  @show="openPopover"
  @hide="closePopover"
>
  <el-table>....弹框展示内容...</el-table>
  <el-tooltip slot="reference" content="弹框展示" effect="dark" placement="bottom">
  	<!-- 主动点击实现弹框展示关闭 -->
    <span class="hover-effect" @click="trigger">
      <svg-icon icon-class="popover1" />
    </span>
  </el-tooltip>
</el-popover>
data() {
  return {
    showPopover: false
  }
},
methods: {
  trigger() {
   //点击控制弹框展示/关闭
   this.showPopover= !this.showPopover
  },
  openPopover() {
    //弹框展示时注册全局点击事件
    document.addEventListener('click', this.hidePopover, false)
  },
  closePopover() {
    //弹框关闭时移除全局点击事件
    document.removeEventListener('click', this.hidePopover, false)
  },
  hidePopover(e) {
    // 全局点击事件,检测当前点击位置不包含弹框的元素,则隐藏弹框
    if (!this.$refs.myPopover.$el.contains(e.target)) {
      this.showPopover= false
    }
  }
}

总结 

到此这篇关于el-popover如何通过js手动控制弹出框显示、隐藏的文章就介绍到这了,更多相关el-popover手动控制弹出框显示隐藏内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 谈谈对vue响应式数据更新的误解

    谈谈对vue响应式数据更新的误解

    本篇文章主要介绍了谈谈对vue响应式数据更新的误解,深入了解了vue响应式数据,有兴趣的可以了解一下
    2017-08-08
  • vue如何根据url下载非同源文件

    vue如何根据url下载非同源文件

    我们在开发过程中,有时会遇到后端返回的文件地址和我们的网站不是同源的情况下,本文就介绍了vue如何根据url下载非同源文件,感兴趣的可以了解一下
    2021-06-06
  • 深入对Vue.js $watch方法的理解

    深入对Vue.js $watch方法的理解

    本篇文章主要介绍了深入对Vue.js $watch方法的理解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧。
    2017-03-03
  • Vue实现极致舒适的可编辑表格

    Vue实现极致舒适的可编辑表格

    使用ElementPlus的Table啥都好,就是没有可编辑表格,所以这篇文章就来和大家分享一下Vue实现极致舒适的可编辑表格的方法,希望对大家有所帮助
    2023-06-06
  • Vue中禁止编辑的常见方法(以禁止编辑输入框为例)

    Vue中禁止编辑的常见方法(以禁止编辑输入框为例)

    在我们开发项目的时候,有时候我们不希望用户对我们的页面进行操作,尤其是输入框之类的,这篇文章主要给大家介绍了Vue中禁止编辑的常见方法,文中介绍的方法主要以禁止编辑输入框为例,需要的朋友可以参考下
    2024-02-02
  • vue2 如何实现div contenteditable=“true”(类似于v-model)的效果

    vue2 如何实现div contenteditable=“true”(类似于v-model)的效果

    这篇文章主要给大家介绍了利用vue2如何实现div contenteditable="true",就是类似于v-model的效果,文中给出了两种解决的思路,对大家具有一定的参考价值,有需要的朋友们下面来一起看看吧。
    2017-02-02
  • vue中的v-show,v-if,v-bind的使用示例详解

    vue中的v-show,v-if,v-bind的使用示例详解

    这篇文章主要介绍了vue中的v-show,v-if,v-bind的使用,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-04-04
  • Vue data中随意改一个属性,视图都会更新吗?

    Vue data中随意改一个属性,视图都会更新吗?

    这篇文章主要讨论Vue data中随意改一个属性,视图都会更新吗?下面来自面试官的问题然后做i出的一个问题总结,具有一定的参考价值,需要的小伙伴可以参考一下
    2021-12-12
  • vue/cli 配置动态代理无需重启服务的操作方法

    vue/cli 配置动态代理无需重启服务的操作方法

    vue-cli是vue.js的脚手架,用于自动生成vue.js+webpack的项目模板,分为vue init webpack-simple 项目名和vue init webpack 项目名两种,这篇文章主要介绍了vue/cli 配置动态代理,无需重启服务,需要的朋友可以参考下
    2022-05-05
  • Vue3+ElementPlus封装图片空间组件的门面实例

    Vue3+ElementPlus封装图片空间组件的门面实例

    图片空间是用于管理上传图片的工具,可以让用户方便地存储、管理和调用图片,提高工作效率,它通常具备多样的样式,但操作入口统一,便于使用,通过图片空间组件,用户能直接在其他模块(例如商品图片)中选择所需图片
    2024-09-09

最新评论