首页 > 其他分享 >Vue ElementUI中 table单元格使用多个Popover解决多行溢出隐藏鼠标悬浮提示问题

Vue ElementUI中 table单元格使用多个Popover解决多行溢出隐藏鼠标悬浮提示问题

时间:2023-05-17 14:02:15浏览次数:28  
标签:Vue name ElementUI refs 单元格 ._ Popover scope self

Popover的简单介绍

trigger属性用于设置何时触发 Popover,支持四种触发方式:hover,click,focus 和 manual。

对于触发 Popover 的元素,有两种写法:使用 slot=“reference” 的具名插槽,或使用自定义指令v-popover指向 Popover 的索引ref。

placement 弹框的出现位置

value / v-model 状态是否可见

hide/show 关闭/显示时触发的事件

table单元格嵌套Popover,@mouseenter @mouseleave 控制scope._self.$refs内的doShow()和doClose方法控制Popover显示隐藏

 

直接上代码

<el-table
                        :data="tableData_jobList"
                        @sort-change="sortChange"
                        empty-text="正在努力加载数据中,请稍后……"
                        :header-cell-style="{background:'#f9f9f9'}"
                        style="width: 100%">
                    <el-table-column
                            prop="title"
                            label="任务标题"
                            min-width="20%">
                        <template slot-scope="scope">
                            <div class="scope_row">
                                <el-popover  :ref="'popover-title'+scope.$index" trigger="manual"
                                             :content="scope.row.title" placement="right" popper-class="black">
                                    <div @mouseenter="visibilityChange($event,scope,'title')" @mouseleave="visibilityClose(scope,'title')" class="text" slot="reference">{{scope.row.title}}</div>
                                </el-popover>
                            </div>
                        </template>
                    </el-table-column>
                   
                    <el-table-column
                            prop="gradeName"
                            label="班级"
                            min-width="10%">
                        <template slot-scope="scope">
                            <el-popover  :ref="'popover-gradeName'+scope.$index" trigger="manual"
                                         :content="scope.row.gradeName" placement="right" popper-class="black">
                                <div @mouseenter="visibilityChange($event,scope,'gradeName')" @mouseleave="visibilityClose(scope,'gradeName')" class="text" slot="reference">{{scope.row.gradeName}}</div>
                            </el-popover>
                        </template>
                    </el-table-column>
                    <el-table-column
                            prop="paperName"
                            label="试卷"
                            min-width="15%">
                        <template slot-scope="scope">
                            <el-popover  :ref="'popover-paperName'+scope.$index" trigger="manual"
                                         :content="scope.row.gradeName" placement="right" popper-class="black">
                                <div @mouseenter="visibilityChange($event,scope,'paperName')" @mouseleave="visibilityClose(scope,'paperName')"
                                         @click="clickPaper(scope.row.paperId,scope.row.systemtype)" slot="reference" class="main_blue text" style="cursor: pointer">{{scope.row.paperName}}</div>
                            </el-popover>

                        </template>
                    </el-table-column>
                </el-table>
methods:{
  //因为一行用到了多个Popover所以ref需要加name区分 visibilityClose(scope,name){ scope._self.$refs["popover-"+name+scope.$index].doClose() }, visibilityChange(event,scope,name){ const ev = event.target; //获取div if(ev.scrollHeight>ev.clientHeight){ scope._self.$refs["popover-"+name+scope.$index].doShow() }else{ scope._self.$refs["popover-"+name+scope.$index].doClose() } }, }

获取dom根据scrollHeight和clientHeight 判断是否多行溢出隐藏

标签:Vue,name,ElementUI,refs,单元格,._,Popover,scope,self
From: https://www.cnblogs.com/bisiyuan/p/17408545.html

相关文章

  • 前端-VUE
    工程化这里要从node.js开始。node.js要弄一个基于事件驱动、非阻塞I/O的的web服务,发现V8引擎+JavaScript很合适。这样Js就能直接写后端应用。然后发展成作为本地的运行容器(类似jdk),将js导入到了本地运行领域。以此位基础,发展出了生态环境,里面关系挺绕的,各种轮子,互相占位。......
  • vue自定义组件——search-box
    github地址:https://github.com/lxmghct/my-vue-components组件介绍props:value/v-model:检索框的值,default:''boxStyle:检索框的样式,default:'position:fixed;top:0px;right:100px;'highlightColor:高亮颜色,default:'rgb(246,186,130)'......
  • 企业级项目模板的配置与集成(Vite + Vue3 + TypeScript)
    企业级项目模板的配置与集成(Vite+Vue3+TypeScript)1、项目介绍项目使用:eslint+stylelint+prettier来对我们代码质量做检测和修复。需要使用husky来做commit拦截需要使用commitlint来统一提交规范需要使用preinstall来统一包管理工具。2、环境准备nodev16.14.2pnp......
  • Vue的生命周期
    varvm=newVue({el:"#app",//在基础初始化完成之后,数据和事件配置之前调用beforeCreate(){console.log("beforeCreate")},//初始化全部完成,实例创建完成后立即调用created(){console.log("created")},//挂载之......
  • VUE前端随笔计2
    又是小白记录问题的一次,老规矩,还是抄别人的代码来改。 在表标签中找到了一个点击事件定位代码,对比别人的,发现自己的删多了,把这个补充回去就行了,具体意思不太明白,大概是给这个模型里面填充这行数据。 ......
  • 局部添加加载中效果loading (vue+elementUI)
    产品需求:有时候我们不想为整个页面添加loading效果。只想给局部区域添加loading效果。(这效果就不揍产品了)在一个表格数据加载时,因为需要连接其它东西,所以后台接口返回数据需要较长时间,因此添加局部Loading效果,增加用户体验度,最开始使用下面代码,直接放到<el-table>中,测试......
  • vscode中vue项目中修改.vue文件名后报错
    报错误信息:Alreadyincludedfilename'.../xxx.vue'differsfromfilename'.../xxx.vue'onlyincasing.Thefileisintheprogrambecause:Importedvia'…/xxx.vue'fromfile'.../xxx.vue'Rootfilespecifiedforcompi......
  • Vuex的使用
    1、Vuex介绍1.1、概念专门在Vue中实现集中式状态(数据)管理的一个Vue插件,对vue应用中多个组件的共享状态进行集中式管理(读/写),也是一种组件间通信的方式,且适用于任意组件之间的通信。1.2、什么时候使用Vuex多个组件共享同一个状态(数据)的时候。1.3、Vuex原理图注意:图中没有体现......
  • Vue 报错-4058 ENOENT: no such file or directory的原因和解决办法
    原因是我在上一级目录打开的cmd然后npmrunserve 需要进到app内run一下 ......
  • vue中使用wangEditor在设置工具栏的显隐
    前段时间为了富文本在wangEditor和tinyMCE中犹豫,虽然最后选择用tinyMCE,但是wangEditor的文档也是去看了的。wangEditor中文文档在这里。由于项目中需要的工具栏并不多,需要将部分工具栏隐藏,然后我将这两个富文本框的文档都看了一下。这里主要说一下wangEditor富文本框的工具栏的......