Bootstrap

vue实现点击复制功能三种方法实现

今天在写需求的时候有个复制功能给实现下,有三种方式可实现

  需求:复制文件名称到航线名,可以减少客户自己输入的操作

效果图:

实现思路:通过模拟输入框的复制来完成对事件的复制 

第一种用ref获取实现

<h3 style=" margin:0px 0px 20px 50px; display: inline-block">航线名:
  <el-input v-model="addPointForm[localIndex].routeInfo.routeName" ref="routeName"placeholder="航线名"
   style="width: 220px; display: inline-block">
</el-input>
</h3>
<el-button type="primary" @click="handleCopy(fileName)" style="margin-left: 20px;">
   同文件名
</el-button>
handleCopy(row) {
 this.$refs.routeName.value = row;
 this.addPointForm[this.localIndex].routeInfo.routeName = row;
},

第二种用原生实现

<h3 style=" margin:0px 0px 20px 50px; display: inline-block">航线名:
  <el-input v-model="addPointForm[localIndex].routeInfo.routeName" ref="routeName"placeholder="航线名"
   style="width: 220px; display: inline-block">
</el-input>
</h3>
<el-button type="primary" @click="handleCopy(fileName)" style="margin-left: 20px;">
   同文件名
</el-button>
copyLink(val) { // 复制链接
    console.log(val, '复制链接')
    let url = val // 后台接口返回的链接地址
    let inputNode = document.createElement('input')  // 创建input
    inputNode.value = url // 赋值给 input 值
    document.body.appendChild(inputNode) // 插入进去
    inputNode.select() // 选择对象
    document.execCommand('Copy') // 原生调用执行浏览器复制命令
    inputNode.className = 'oInput'
    inputNode.style.display = 'none' // 隐藏
    this.$message.success('复制成功')
},

第三种方法用插件去实现vue-clipboard2

1. 安装插件:

cnpm install vue-clipboard2 --save

2. 在main.js里面引入:

import VueClipboard from 'vue-clipboard2'
Vue.use(VueClipboard)
<h3 style=" margin:0px 0px 20px 50px; display: inline-block">航线名:
  <el-input v-model="addPointForm[localIndex].routeInfo.routeName" ref="routeName"placeholder="航线名"
   style="width: 220px; display: inline-block">
</el-input>
</h3>
<el-button type="primary" @click="handleCopy(fileName)" style="margin-left: 20px;">
   同文件名
</el-button>
methods: {
    copyLink(val) { // 复制链接  val 就是你需要复制的链接
      this.$copyText(val).then(e => {
        this.$Message.success('复制成功!')
      }, e => {
        this.$Message.error('复制失败!')
      })
    },
}

Vue 实现复制功能,具有很好的参考价值,希望对大家有所帮助。

;