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