el-popover双层嵌套
时间: 2023-11-19 10:55:27 浏览: 42
el-popover双层嵌套会导致子popover中的弹窗打开第二个的时候第一个不能自动关闭。解决方法是在外层popover的内容上添加click事件,用this.$refs.XXX.doClose()方法关闭,同时触发内部popover的reference,需要添加click事件阻止事件冒泡,两者缺一不可。另外,el-popover是会根据body的点击事件来进行显隐的,如果点击了非弹出层包裹的内容,那么弹出层就会关闭。
相关问题
el-popover嵌套el-popover
el-popover是Element UI中的一个组件,用于实现弹出式的气泡框。el-popover可以嵌套el-popover,实现多层级的弹出框效果。
要实现el-popover嵌套el-popover,可以按照以下步骤进行操作:
1. 在需要嵌套的元素上添加el-popover组件,并设置相应的属性和内容。
2. 在el-popover的内容中,再次添加el-popover组件,并设置相应的属性和内容。
3. 根据需要,可以继续嵌套更多层级的el-popover组件。
需要注意的是,每个el-popover组件都需要设置不同的触发方式和位置,以避免重叠或冲突。
以下是一个示例代码,演示了如何嵌套el-popover:
```html
<template>
<div>
<el-button type="primary" v-popover:outer>点击我</el-button>
<el-popover ref="outer" placement="right-start" width="200">
<p>外层Popover内容</p>
<el-button type="success" v-popover:inner>点击我</el-button>
<el-popover ref="inner" placement="right-start" width="200">
<p>内层Popover内容</p>
</el-popover>
</el-popover>
</div>
</template>
<script>
export default {
// ...
}
</script>
```
在上述示例中,外层Popover通过`v-popover:outer`指令与按钮进行关联,内层Popover通过`v-popover:inner`指令与按钮进行关联。通过设置不同的placement属性,可以控制Popover的弹出位置。
el-popover 嵌套 意外关闭
el-popover 嵌套意外关闭的问题可以通过以下解决方法来解决:
1. 使用 stop-click-event 修饰符:在 el-select 组件上添加 stop-click-event 修饰符可以阻止点击事件冒泡到 el-popover 组件,从而避免意外关闭。例如:
```html
<el-popover>
<el-select v-model="value" @click.stop>
<!-- options -->
</el-select>
</el-popover>
```
2. 使用 append-to-body 属性:将 el-select 的 options 弹框渲染到 body 上,而不是父元素 el-popover 上,这样点击 options 弹框时不会触发 el-popover 的关闭条件。例如:
```html
<el-popover>
<el-select v-model="value" :append-to-body="true">
<!-- options -->
</el-select>
</el-popover>
```
3. 使用 v-model 控制显示状态:通过在 el-popover 上使用 v-model 控制显示状态,而不是依赖点击事件来进行显隐,可以避免意外关闭。例如:
```html
<el-popover v-model="popoverVisible">
<el-select v-model="value">
<!-- options -->
</el-select>
</el-popover>
```
```javascript
data() {
return {
popoverVisible: false,
value: ''
}
}
```