Vue实现复制粘贴功能

锦通  金牌会员 | 2022-6-25 09:26:11 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 669|帖子 669|积分 2007

目录
一、需求说明
二、代码实现
1、安装 vue-clipboard2 依赖
2、在 main.js 文件中全局引入插件
3、案例
三、项目所用 :
实现选中并且复制成功后带有提示信息的效果 :

一、需求说明

在项目中 点击按钮 复制 某行文本是很常见的 应用场景,
在 Vue 项目中实现 复制功能 需要借助 vue-clipboard2 插件。
二、代码实现

1、安装 vue-clipboard2 依赖

( 出现错误的话,可以试试切换成淘宝镜像源
npm config set registry https://registry.npm.taobao.org )
  1. npm install --save vue-clipboard2
复制代码
"vue-clipboard2": "^0.3.3",

2、在 main.js 文件中全局引入插件

示例代码如下:
  1. import Vue from 'vue'
  2. import VueClipBoard from 'vue-clipboard2'
  3. Vue.use(VueClipBoard)
  4. new Vue({
  5.   render: h => h(App)
  6. }).$mount('#app')
复制代码
3、案例

在组件中有两种方法可以实现复制功能。
方法一 :
使用 vue-clipboard2 提供的 指令
直接将变量内容复制至剪切板,暂时没有找到处理数据后再复制的方式
  1. <template>
  2.   
  3.     <input type="text" v-model="message">
  4.     <el-button
  5.       icon="el-icon-share"
  6.       size="mini"
  7.       style="font-size: 16px;padding: 4px 8px;"
  8.       title="共享"
  9.       v-clipboard:copy="scope.row.url"
  10.       v-clipboard:success="onCopy"
  11.       v-clipboard:error="onError"
  12.       @click="share(scope.row.url)"></el-button>
  13.   
  14. </template>
复制代码
复制时,通过 v-clipboard: copy 复制输入的内容 :
  1. // 复制成功 or 失败(提示信息!!!)
  2. onCopy: function (e) {
  3.   console.log('复制成功!', e)
  4. },
  5. onError: function (e) {
  6.   console.log('复制失败!', e)
  7. }
复制代码

方法二:
使用 vue-clipboard2 全局绑定的 $copyText 事件方法
复制动作使用的是 Vue 响应函数方式,这就为复制前控制数据提供了可能!
  1. // 点击事件
  2. share(val) {
  3.   this.handleData(val)
  4.   this.$copyText(this.message).then(function (e) {
  5.     alert('Copied')
  6.   }, function (e) {
  7.     alert('Can not copy')
  8.   })
  9. },
  10. // 数据处理
  11. handleData(val){
  12.   this.message = this.message + ' ' + val
  13. }
复制代码
  1. <template>
  2.   
  3.     <el-button
  4.       type="success"
  5.       size="small"
  6.       style="margin-left: 10px"
  7.       @click="onCopy"
  8.       >复制</el-button
  9.     >
  10.   
  11. </template>
复制代码

三、项目所用 :

实现选中并且复制成功后带有提示信息的效果 :

  1. <template>
  2.   
  3.     <input type="text" v-model="message">
  4.     <el-button
  5.       icon="el-icon-share"
  6.       size="mini"
  7.       style="font-size: 16px;padding: 4px 8px;"
  8.       title="共享"
  9.       v-clipboard:copy="scope.row.url"
  10.       v-clipboard:success="onCopy"
  11.       v-clipboard:error="onError"
  12.       @click="share(scope.row.url)"></el-button>
  13.   
  14. </template> 反馈地址         复制链接  
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

锦通

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表