vue中el-table单元格复制功能

news2024/9/25 19:18:16

一、单页面中使用
1.在el-table上绑定单击事件 @cell-click=“copyText” 或双击事件 @cell-dblclick=“copyText”
在这里插入图片描述
注:cell-dblclick函数有四个参数,分别是row, column, cell, event;

row:可看到被其操作单元格所在行的所有的数据;

cloumn:可以看到被其操作单元格的property,根据property可以再row中得到该单元格的值;

cell:可看到该单元格的dom结构;

event:事件触发时的所有参数;

2.在methods中写如方法即可

copyText(row, column, cell, event){
      // 双击复制
      let save = function (e){
        e.clipboardData.setData('text/plain',event.target.innerText);
        e.preventDefault();  //阻止默认行为
      }
      document.addEventListener('copy',save);//添加一个copy事件
      document.execCommand("copy");//执行copy方法
      this.$message({message: '复制成功', type:'success'})//提示
    },

二、封装成组件,使用mixins
Mixins 是一种让多个组件之间共享Vue选项的方式,适合抽取和复用多个组件的相同选项或逻辑。你可以把公共方法封装在一个 mixin 中,然后在需要的组件中引入和使用。
Mixin 示例 (新建columnCopy.js):
1.在el-table上绑定单击事件 @cell-click=“copyText” 或双击事件 @cell-dblclick=“copyText”
在这里插入图片描述
2.新建columnCopy.js,此文件中方法为

export const commonMethodsMixin = {
  methods: {
    copyText(row, column, cell, event){
      // 双击复制
      let save = function (e){
        e.clipboardData.setData('text/plain',event.target.innerText);
        e.preventDefault();  //阻止默认行为
      }
      document.addEventListener('copy',save);//添加一个copy事件
      document.execCommand("copy");//执行copy方法
      this.$message({message: '复制成功', type:'success'})//提示
    },
  }
};

3.在使用此方法的组件中引入columnCopy.js文件

  import { commonMethodsMixin } from '@/utils/columnCopy';

并在export default中使用 mixins: [commonMethodsMixin],如下图
在这里插入图片描述
三、 单击copy图标复制对应的内容到剪切板

  1. 添加copy的小图标
<span v-else>
  <i class="el-icon-document-copy" @click="clickCopy(msg)" />
  {{ msg }}
</span>
  1. 在methods中添加单击复制的clickCopy方法
clickCopy(msg) {
  const save = function(e) {
    e.clipboardData.setData('text/plain', msg)
    e.preventDefault() // 阻止默认行为
  }
  document.addEventListener('copy', save) // 添加一个copy事件
  document.execCommand('copy') // 执行copy方法
  this.$message({ message: '复制成功', type: 'success' })
}

3.踩坑
添加了copy事件之后整个页面按ctrl+c复制东西没反应了

猜测是使用document.addEventListener(‘copy’, save)会在整个dom树添加事件,会覆盖dom树原有的事件的发生,所以需要添加once参数使这个事件只生效一次

once 表示 listener 在添加之后最多只调用一次。如果是 true, listener 会在其被调用之后自动移除

clickCopy(msg) {
  const save = function(e) {
    e.clipboardData.setData('text/plain', msg)
    e.preventDefault() // 阻止默认行为
  }
  const once = {
    once: true
  }
  document.addEventListener('copy', save, once) // 添加一个copy事件,当触发时执行一次,执行完删除
  document.execCommand('copy') // 执行copy方法
  this.$message({ message: '复制成功', type: 'success' })
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1914742.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前端八股文 对事件循环的理解

对事件循环的理解 思维导图 图示 实际案例的执行过程 总结

网页UI:想让页面更加精致,我来偷偷告诉你7个细节

采用合适的配色方案&#xff1a; 选择一套合适的配色方案&#xff0c;搭配主题色和辅助色&#xff0c;以及不同色调的阴影和渐变效果&#xff0c;可以让网页UI更加丰富、有层次感。 使用合适的字体&#xff1a; 选择适合网页风格的字体&#xff0c;如清晰易读的无衬线字体&a…

typora 两边太宽,设置宽度

步骤&#xff1a; 查看目前使用主题类型 文件 —> 偏好设置 —> 外观 —> 打开主题文件夹 修改对应的主题&#xff1a;max-width

基于 TI AM62 测试 QtWayland 部署

By Toradex秦海 1). 简介 目前主流的 ARM 平台嵌入式 Linux BSP 的显示后端基本都已经从 X11 升级到了 Wayland&#xff0c; 而常用的 Wayland Compositor - Weston 对于 Linux 下常用的 Qt 图形界面开发框架的一些 Plugin (比如 Qt VirtualKeyboard) 的配合并不完善&#xf…

深度学习模型分布式训练

单机单卡训练 单机多卡训练 使用torch.nn.DataParallel方式&#xff0c;修改简单&#xff0c;但单进程效率慢 使用DDP方式&#xff0c;多进程效率高&#xff0c;推荐 多机多卡 模型并行 示例&#xff1a;

基础架构服务API:降低成本,提升业务效益

基础架构服务API的应用可以显著降低企业的成本&#xff0c;并提升业务效益。通过使用这些API&#xff0c;企业可以充分利用云计算、自动化部署和资源管理等功能&#xff0c;从而减少了传统基础设施所需的大量投资和维护成本。这些API还提供了弹性扩展和自动化功能&#xff0c;使…

Linux系统学习 —— 计算机基础(笔记篇)

一、电脑硬件 电脑硬件由输入&#xff0c;控制计算&#xff0c;输出三部分组成。 输入部分包括键鼠&#xff0c;读卡器&#xff08;外部接口&#xff09;&#xff0c;扫描仪&#xff08;打印机的扫描仪&#xff09;。计算控制部分包括CPU &#xff0c; 内存&#xff0c;硬盘&…

【Unity2D 2022:NPC】制作任务系统

一、接受任务 1. 编辑NPC对话脚本&#xff1a; &#xff08;1&#xff09;创建静态布尔变量用来判断ruby是否接受到任务 public class NPCDialog : MonoBehaviour {// 创建全局变量用来判断ruby是否接到任务public static bool receiveTask false; } &#xff08;2&#xff…

EtherCAT笔记(六)—— 分布时钟之一

目录 1. 分布时钟的功能 2. 分布时钟涉及到的概念 2.1 系统时间 2.2 参考时钟 & 从时钟 2.3 主站时钟 2.4 本地时钟 2.4.1 本地时钟的初始偏移量 2.4.2 本地时钟的时钟漂移 2.5 本地系统时间 2.6 传输延时 人们理解知识的一个阻碍就是那些从没见过的概念和这些概念的随意使…

Apache Doris:下一代实时数据仓库

Apache Doris&#xff1a;下一代实时数据仓库 概念架构设计快速的原因——其性能的架构设计、特性和机制基于成本的优化器面向列的数据库的快速点查询数据摄取数据更新服务可用性和数据可靠性跨集群复制多租户管理便于使用半结构化数据分析据仓一体分层存储 词条诞生 概念 Apa…

在攻防演练中遇到的一个“有马蜂的蜜罐”

在攻防演练中遇到的一个“有马蜂的蜜罐” 有趣的结论&#xff0c;请一路看到文章结尾 在前几天的攻防演练中&#xff0c;我跟队友的气氛氛围都很好&#xff0c;有说有笑&#xff0c;恐怕也是全场话最多、笑最多的队伍了。 也是因为我们遇到了许多相当有趣的事情&#xff0c;其…

usbserver工程师手记(二)设置定时任务

概述 部分银行ukey 长时间不使用后会导致休眠&#xff0c;出现虽然有连接&#xff0c;但是读不到证书&#xff0c;可以用定时重置端口的办法&#xff0c;调用接口 http://ip/usb_server/reset_port,参数为 {"port":"B5-1-2","vid_pid":"09…

2023年高教杯数学建模2023B题解析(仅从代码角度出发)

前言 最近博主正在和队友准备九月的数学建模,在做往年的题目&#xff0c;博主主要是负责数据处理&#xff0c;运算以及可视化&#xff0c;这里分享一下自己部分的工作,相关题目以及下面所涉及的代码后续我会作为资源上传 问题求解 第一题 第一题的思路主要如下&#xff1a;…

【雷达原理】数字波束形成(DBF)

目录 一、数字波束形成1.1 DBF原理1.2 工程应用实现方式1.2.1 预先存储权矢量1.2.2 利用DFT/FFT实现DBF 二、DBF应用2.1 通道间相干积累2.2 测量目标角度 三、MATLAB代码 一、数字波束形成 数字波束形成&#xff08;Digital Beam Forming&#xff0c;DBF) 技术&#xff0c;是针…

大数据Spark--核心编程

文章目录 IDEA 配置Spark环境增加scala插件创建Maven项目&#xff0c;配置pom.xml配置log4j.properties Spark 三大数据结构RDDRDD概念核心属性执行原理基础编程RDD创建RDD 并行度与分区RDD转换算子Value类型双Value类型Key - Value类型reduceByKey和groupByKey的区别&#xff…

为什么说java只要还是泛型擦除,就不要吹自己高性能?

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「java的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“666”之后私信回复“666”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01;关于“Java只要还是泛型擦除…

内存迎来革命性升级,只装一条就能组成双通道

相信用过台式机的同学或多或少都遇到过一个情况&#xff0c;那就是按下开机键后&#xff0c;除了显示器不亮&#xff0c;哪儿都亮。 拿着自己的故障满世界发帖求助&#xff0c;得到最多的回答就是&#xff0c;断电拔下内存用橡皮擦擦擦金手指再装回。而这样的操作确实能解决大部…

漏洞挖掘 | 记某证书站任意账号接管漏洞

下文中所述漏洞已修复 在前段时间的漏洞挖掘中&#xff0c;上了某证书站&#xff0c;打点的一处逻辑漏洞 访问某一站点&#xff0c;发现了一处登录页 点击登录按钮之后&#xff0c;发现该站点大概率是自写站点&#xff0c;存在逻辑漏洞的可能性大大增大&#xff0c;利用前期信…

西门子S7-1500PLC与ABB变频器通讯及控制程序

文章目录 前言一、硬件组态二、编写通讯程序1.新建数据类型“ABB_UDT”2.新建DB块“变频DB”3.新建FC块“轴流风机” 二、编写模拟量转换程序1.编写速度设定程序2.编写速度反馈程序3.编写电流反馈程序4.编写力矩反馈程序 三、编写启/停控制程序总结 前言 本文基于某实际项目&a…

Linux和Windows配置公钥到服务器上【免密登录/传输文件】

文章目录 1.Windows配置公钥到服务器上1.1.生成SSH密钥对&#xff08;如果尚未生成&#xff09;&#xff1a;1.2.复制公钥到远程服务器&#xff1a;1.3.手动复制公钥到远程服务器&#xff1a;1.4.测试SSH连接&#xff1a; 2.Linux配置公钥到服务器上2.1生成SSH密钥对&#xff0…