悬停时出现多个 vue 弹出框

Posted

技术标签:

【中文标题】悬停时出现多个 vue 弹出框【英文标题】:Multiple vue popover on hover 【发布时间】:2020-01-10 20:40:41 【问题描述】:

我为组件添加了 vue Element UI 库,它在单个实例上工作正常,但是当我使用它几次或多次时它就不起作用了!

这里是详细概述

var Main = 
  data() 
    return 
      visible: false
    ;
  
;
var Ctor = Vue.extend(Main)
new Ctor().$mount('#app')
@import url("//unpkg.com/element-ui@2.12.0/lib/theme-chalk/index.css");
<script src="//unpkg.com/vue/dist/vue.js"></script>
<script src="//unpkg.com/element-ui@2.12.0/lib/index.js"></script>
<div id="app">
  <template>
 

<div>
   <el-popover
    ref="popover"
    placement="right"
    title="Title"
    
    trigger="hover"
    content="this is content, this is content, this is content">
    
 
  </el-popover>
   <el-button v-popover:popover>Focus to activate</el-button>
</div>
    
    <br/><br/>
    
<div>
   <el-popover
    ref="popover1"
    placement="right"
    title="Title"
    
    trigger="hover"
    content="this is content, this is content, this is content">
    
 
  </el-popover>
   <el-button v-popover:popover1>Focus to activate</el-button>
</div>
 

 
</template>
</div>

每个弹出框的 ID 必须是唯一的 https://element.eleme.io/#/en-US/component/installation

【问题讨论】:

您是否尝试过为每个弹出框元素使用唯一的引用?由于相同的参考,您似乎同时获得所有弹出窗口。 不,我不知道该怎么做? 试试这个建议,看看它是否有效。但从文档看来它是参考???? 【参考方案1】:

您的reference 必须是唯一的。

var Main = 
  data() 
    return 
      visible: false
    ;
  
;
var Ctor = Vue.extend(Main)
new Ctor().$mount('#app')
@import url("//unpkg.com/element-ui@2.12.0/lib/theme-chalk/index.css");
<script src="//unpkg.com/vue/dist/vue.js"></script>
<script src="//unpkg.com/element-ui@2.12.0/lib/index.js"></script>
<div id="app">
  <template>
 

<div>
   <el-popover
    ref="popover"
    placement="right"
    title="Title"
    
    trigger="hover"
    content="this is content, this is content, this is content">
    
 
  </el-popover>
   <el-button v-popover:popover>Focus to activate</el-button>
</div>
    
    <br/><br/>
    
<div>
   <el-popover
    ref="popover2"
    placement="right"
    title="Title"
    
    trigger="hover"
    content="this is content, this is content, this is content">
    
 
  </el-popover>
   <el-button v-popover:popover2>Focus to activate</el-button>
</div>
 

 
</template>
</div>

【讨论】:

很好!如果我有无限组件那么我该如何处理ref="popover2" 属性? 当然,每个人都有唯一的 ID。我确定您会使用某种数组来填充列表,并且索引可以为您的每个元素提供唯一性。 @Momin 你可以在v-for 中使用key 来生成唯一的ref。或在el-popover 中使用&lt;el-button slot="reference"&gt;Click to activate&lt;/el-button&gt; 并删除ref。 example

以上是关于悬停时出现多个 vue 弹出框的主要内容,如果未能解决你的问题,请参考以下文章

updatepanel 里面放ASPxGridView,使用RegisterClientScriptBlock方法,弹出框弹不出

js弹出框对话框提示框弹窗总结

js弹出框对话框提示框弹窗总结

(转)js弹出框对话框提示框弹窗总结

如何在悬停时保持 Bootstrap 弹出框活着?

隐藏弹出框控制器