el-popover弹出框点击弹出框外的区域隐藏该弹出框
时间: 2023-07-20 14:14:30 浏览: 161
您好!对于el-popover弹出框,可以通过设置其属性`hide-on-click-outside`为true来实现点击弹出框外的区域隐藏该弹出框。例如:
```
<el-popover
title="标题"
content="这是一段内容"
trigger="click"
hide-on-click-outside>
<el-button>点击弹出</el-button>
</el-popover>
```
这样,当您点击弹出框外的区域时,该弹出框会自动隐藏。希望能够帮到您!
相关问题
当el-popover弹出框为手动激活时如何实现点击弹出框外的区域隐藏该弹出框
当el-popover弹出框为手动激活时,可以通过监听document的click事件,在事件处理函数中判断点击的区域是否在弹出框内,如果不在则隐藏弹出框。可以参考下面的代码实现:
```
<template>
<div ref="trigger" @click="showPopover">手动激活</div>
<el-popover
ref="popover"
title="标题"
content="这是一段内容"
:visible-arrow="false"
popper-class="my-popover">
<div @click.stop></div><!-- 这里添加一个空的div用于阻止点击事件冒泡 -->
</el-popover>
</template>
<script>
export default {
methods: {
showPopover() {
this.$refs.popover.showPopper() // 手动激活弹出框
// 监听document的click事件
document.addEventListener('click', this.handleClickOutside)
},
handleClickOutside(e) {
if (!this.$refs.popover.$el.contains(e.target) && !this.$refs.trigger.contains(e.target)) {
// 点击的区域不在弹出框内也不在触发器内,隐藏弹出框
this.$refs.popover.hidePopper()
// 移除document的click事件监听
document.removeEventListener('click', this.handleClickOutside)
}
}
}
}
</script>
```
在上面的代码中,我们通过`showPopover`方法手动激活弹出框,并在其中添加了一个监听document的click事件的代码。当点击document时,会触发`handleClickOutside`方法,其中`contains`方法用于判断点击的区域是否在弹出框内或触发器内,如果不在则隐藏弹出框并移除document的click事件监听。需要注意的是,为了防止点击事件冒泡到document,我们在弹出框内添加了一个空的div,并在其上添加了一个@click.stop事件处理函数。
el-table-column中使用el-popover弹出框
可以在el-table-column的作用域插槽中使用el-popover弹出框,具体步骤如下:
1. 在el-table-column中定义作用域插槽,例如:
```html
<el-table-column label="操作">
<template slot-scope="scope">
<el-button type="text" @click="showPopover(scope.row)">详情</el-button>
<el-popover ref="popover" placement="top-start" width="200">
<p>{{ popoverContent }}</p>
</el-popover>
</template>
</el-table-column>
```
2. 在组件中定义showPopover方法,用于显示弹出框:
```javascript
methods: {
showPopover(row) {
this.popoverContent = row.name // 设置弹出框内容
this.$refs.popover.$refs.popper.style.display = 'block' // 显示弹出框
}
}
```
3. 在组件中定义popoverContent数据,用于保存弹出框内容:
```javascript
data() {
return {
popoverContent: ''
}
}
```
这样就可以在el-table-column中使用el-popover弹出框了。需要注意的是,由于el-popover是懒加载的,需要手动设置弹出框的display属性为'block',否则无法显示。
阅读全文