el-popover 点击其他位置关闭弹窗

第一次写前端项目,只会一些基础,如有错误请多多指点

问题说明

因开发需求使用了el-popvoer,需要在其中自定义布局且点击布局中的按钮后关闭弹窗;

所以使用:visible属性来控制是否显示,但又发现点击弹窗之外的地方不能再关闭弹窗

在网上搜索答案,发现可以使用element-plus中的ClikcOutside,便按官网中的步骤导入使用

但运行时会出错,显示 "vClickOutside is not define"; 网上搜索也没有看见类似的问题,只能自己试着解决了

解决方法

经过漫长的试错,终于解决啦!!!!

官网里面的import导入不对,导入时需要改成下面的代码:

分为全局和局部(组件中)两种方式

全局注册

在main.js中注册

import ClickOutside from 'element-plus/es/directives/click-outside/index'

const app = createApp(App)
app.directive('click-outside', ClickOutside)

局部注册

在使用的组件中导入

import vClickOutside from 'element-plus/es/directives/click-outside/index'

局部注册需要将ClickOutside改名为vClickOutside

使用

根据Vue使用自定义指令使用方式,在需要的元素上使用

 <div class="edit_box" v-click-outside="hidePop">
       
 </div>

1、点击使用ClickOutside的元素以外的地方就会触发hidePop方法;

2、在hidePop方法中将弹窗的状态变量赋值为false,来关闭弹窗

 附:

自己做个记录,也分享下解决办法,希望能帮到相同问题的同学

你可以通过设置`el-dialog`的样式来实现在`el-popover`下方显示。首先,你需要确保`el-dialog`的父元素具有相对定位(`position: relative`),以便进行定位。然后,你可以使用绝对定位(`position: absolute`)来将`el-dialog`放置在`el-popover`下方。 以下是一个示例代码: ```html <template> <div class="container"> <el-popover ref="popover" placement="bottom" title="Popover"> <el-button slot="reference">Click me</el-button> <el-dialog title="Dialog" :visible.sync="dialogVisible" :before-close="beforeClose" > <span>Dialog content</span> </el-dialog> </el-popover> </div> </template> <script> export default { data() { return { dialogVisible: false }; }, methods: { beforeClose(done) { // 关闭 dialog 时同时关闭 popover this.dialogVisible = false; this.$refs.popover.doClose(); done(); } } }; </script> <style> .container { position: relative; } .el-dialog { position: absolute; bottom: -100%; z-index: 9999; /* 可根据需求调整层级 */ } </style> ``` 在上述示例中,我们将`el-dialog`设置为绝对定位,并将其底部位置设置为负值,使其隐藏在父元素外部。然后,在需要显示`el-dialog`时,通过将`dialogVisible`设置为`true`来显示它。同时,我们通过调用`el-popover`的`doClose`方法来关闭`el-popover`,以保持一致的交互体验。 请根据你的实际需求调整代码,并确保为`el-dialog`和`el-popover`添加适当的样式和事件处理。希望能对你有所帮助!
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值