在使用 Element UI时,el-popover
组件默认是绑定到一个特定的触发元素上的,并且会在该触发元素的附近显示。然而,如果你希望 el-popover
能够根据用户的点击位置动态显示,(如表格中的每一项),需要进行一些自定义处理。
1. 创建一个 Vue 组件
在这个组件中,我们将处理点击事件并更新 el-popover
的位置。
html
<!-- 触发 Popover 的按钮(可选) -->
<el-button @click="clickPop('button',$event)">点击</el-button>
<!-- Popover 组件 -->
<el-popover
v-if="showPop"
ref="pop"
:reference="reference"
placement="right"
:offset="200"
trigger="click"
>
<p>我是悬浮框</p>
</el-popover>
2. 点击时,更新 Popover 的位置
根据点击事件的位置,更新 Popover 的显示位置。
javascript
// data
data() {
return {
reference: {},
// 控制渲染条件 如果不用v-if会报错 具体可自行尝试
showPop: false,
// 保存当前激活的refrence id
activeItem: null,
};
},
点击事件处理
javascript
// 点击显示Pop
clickPop(item, event) {
// 这个操作是为了避免与源码中的点击reference doToggle方法冲突
if (this.activeItem === item && this.showPop) return;
this.showPop = false;
this.activeItem = item;
// 设置reference
this.reference = event.target;
this.$nextTick(() => {
// 等待显示的popover销毁后再 重新渲染新的popover
this.showPop = true;
this.$nextTick(() => {
// 此时才能获取refs引用
this.$refs.pop.doShow();
});
});
},