vue之复制内容要剪贴板

2021-07-27  本文已影响0人  执笔于情

有的时候在移动端, 会遇到个复制内容到剪贴板的需求, 自己封装的话又感觉很麻烦, 在vue里有一个vue-clipboard2的插件

npm install --save vue-clipboard2
import Vue from 'vue'
import VueClipboard from 'vue-clipboard2'
 
Vue.use(VueClipboard)

第一种使用方法, 使用$ref
如:

let container = this.$refs.container;
this.$copyText("Text to copy", container);

第二种是直接在标签里面使用

<div id="app"></div>
 
<template id="t">
  <div class="container">
    <input type="text" v-model="message">
    <button type="button"
      v-clipboard:copy="message"
      v-clipboard:success="onCopy"
      v-clipboard:error="onError">Copy!</button>
  </div>
</template>

<script>
new Vue({
  el: '#app',
  template: '#t',
  data: function () {
    return {
      message: 'Copy These Text'
    }
  },
  methods: {
    onCopy: function (e) {
      alert('You just copied: ' + e.text)
    },
    onError: function (e) {
      alert('Failed to copy texts')
    }
  }
})
</script> 

还有第三种方法, 是直接用事件绑定的

<div id="app"></div>
 
  <template id="t">
    <div class="container">
    <input type="text" v-model="message">
    <button type="button" @click="doCopy">Copy!</button>
    </div>
  </template>
 
  <script>
  new Vue({
    el: '#app',
    template: '#t',
    data: function () {
      return {
        message: 'Copy These Text'
      }
    },
    methods: {
      doCopy: function () {
        this.$copyText(this.message).then(function (e) {
          alert('Copied')
          console.log(e)
        }, function (e) {
          alert('Can not copy')
          console.log(e)
        })
      }
    }
  })
  </script>

一般感觉第二种会方便一些, hahaha

上一篇下一篇

猜你喜欢

热点阅读