vue clipboard.js复制异步获取到的数据

问题:Clipboard.js复制通过接口获取到的数据,复制失败(在Clipboard.js的复制操作中,不能包含任何异步的操作,即便包含,复制的还是copyData之前的值。)

解决方法:

思路:页面新创建一个DOM节点,将获取到的赋值内容赋值给data-clipboard-text属性,页面渲染完成后,模拟点击复制。记得将新创建的节点在页面隐藏

代码:

html:

//复制链接按钮  
<button
  class="preview_goods preview_handle"
  key="indexs"
  @click="handleCopy(item,indexs)"
  >
   <img src="../assets/img/icon/preview_handle.png" alt="" />
   <p class="button-preview">复制链接</p>
</button>

//模拟复制节点
<span class="copyU" ref="copy" :data-clipboard-text="url" @click="copy"></span>

js:

    // 获取链接,并模拟点击
    async handleCopy(goods, indexs){
       const res = await this.$store.dispatch("getShortUrlByGoodsIdAndStaffPhone", {
          goodsId: goods.goodsInfo.goodsId,
        })
        if (res.statusCode == 200) {
          this.url = res.data
          this.$nextTick(_=>{
           this.$refs.copy.click()
          })
        }else{
           Toast(res.alertMsg);
        }
    },
   //复制方法
    copy(evnet){
      evnet.preventDefault()
       let clipboard = new Clipboard('.copyU')
        clipboard.on('success', e => {
            Toast('复制成功')
          // 释放内存
          clipboard.destroy()
        })
        clipboard.on('error', e => {
        // 不支持复制
          Toast('该浏览器不支持自动复制')
          // 释放内存
          clipboard.destroy()
        })
    },

 

 

上一篇:.NET(C#) Clipboard剪贴板内容(文本和Html)提取和替换方法及示例代码


下一篇:动手学深度学习