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

 更新时间:2024年07月11日 11:55:34   作者:~张小八~  
这篇文章主要介绍了vue中el-table单元格复制功能实现,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧

一、单页面中使用

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>

2.在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' })
}

到此这篇关于vue中el-table单元格复制功能的文章就介绍到这了,更多相关vue el-table单元格复制内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • vue路由传参页面刷新参数丢失问题解决方案

    vue路由传参页面刷新参数丢失问题解决方案

    这篇文章主要介绍了vue路由传参页面刷新参数丢失问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • 解决ant-design-vue安装报错的问题

    解决ant-design-vue安装报错的问题

    这篇文章主要介绍了解决ant-design-vue安装报错的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • vuex直接赋值的三种方法总结

    vuex直接赋值的三种方法总结

    今天小编就为大家分享一篇vuex直接赋值的三种方法总结,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-09-09
  • 浅析vue数据绑定

    浅析vue数据绑定

    本文主要介绍了vue数据绑定的相关知识,具有一定的参考价值,下面跟着小编一起来看下吧
    2017-01-01
  • Vue3在css中使用js变量及其原理解读

    Vue3在css中使用js变量及其原理解读

    这篇文章主要介绍了Vue3在css中使用js变量及其原理解读,结合实例代码介绍了vue3中css使用script中定义的变量的方法,本文给大家介绍的非常详细,需要的朋友可以参考下
    2023-09-09
  • Vue3+echarts5踩坑以及resize方法报错的解决

    Vue3+echarts5踩坑以及resize方法报错的解决

    这篇文章主要介绍了Vue3+echarts5踩坑以及resize方法报错的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • vue中销毁定时器的几种解决方案

    vue中销毁定时器的几种解决方案

    这篇文章主要给大家介绍了关于vue中销毁定时器的几种解决方案,销毁定时器的操作一般是在beforeDestroy钩子中进行,根据定时器的数量不同可以有多种解决方法,需要的朋友可以参考下
    2023-08-08
  • vue3 实现牙位图选择器的实例代码

    vue3 实现牙位图选择器的实例代码

    这篇文章主要介绍了vue3 实现牙位图选择器的实例代码,代码简单易懂,需要的朋友参考下吧
    2025-04-04
  • Vue3配置路由ERROR in [eslint]报错问题及解决

    Vue3配置路由ERROR in [eslint]报错问题及解决

    这篇文章主要介绍了Vue3配置路由ERROR in [eslint]报错问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-10-10
  • Vue页面加载完成后如何自动加载自定义函数

    Vue页面加载完成后如何自动加载自定义函数

    这篇文章主要介绍了Vue页面加载完成后如何自动加载自定义函数,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07

最新评论