关于前端:element-UI-多个元素共有一个popover-实现方法

如果是列表循环,每一个元素有都有本人popover,那咱们间接用popover循环即可,相似于:

// HTML
<el-popover
  v-for="tag in list"
  :key="tag.name"
  placement="top-start"
  title="题目"
  width="200"
  trigger="hover"
  :content="tag.type"
>
  <el-tag slot="reference">{{ tag.name }}</el-tag>
</el-popover>

// JS

list: [
  { name: "标签一", type: "normal" },
  { name: "标签二", type: "success" },
  { name: "标签三", type: "info" },
  { name: "标签四", type: "warning" },
  { name: "标签五", type: "danger" },
]

还有一种非列表循环的常见,两个或者多个不同的元素怎么共有一个popover呢,间接上代码

HTML

<el-button id="btn1" v-popover:popover @click="btnClick($event)">手动激活1</el-button>
<el-button id="btn2" v-popover:popover @click="btnClick($event)">手动激活2</el-button>

<el-popover
  ref="popover"
  placement="bottom"
  title="题目"
  width="200"
  trigger="manual"
  content="这是一段内容,这是一段内容,这是一段内容,这是一段内容。"
  v-model="visible"
>
</el-popover>

JS

data() {
  return {
    visible: false,
    ]
  };
},
  methods: {
    btnClick(e) {
      // 外围代码
      this.visible = false;
      this.$refs.popover.doDestroy(true);
      this.$nextTick(() => {
        this.$refs.popover.referenceElm = e.target;
        this.visible = true;
      });
    },
  }

这个形式实用于popover自定义管制显示,通过v-popover指令绑定到须要触发popover的元素,

  1. 点击后先把popover暗藏,通过调用组件外部办法doDestorypopover销毁。
  2. 而后通过nextTick把新的元素赋值给popoverreference,再把popover显示进去。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理