当前位置: 首页 > Web前端 > vue.js

【爬坑笔记】在vue中使用clipboard.js实现单个组件多个复制功能遇到的坑

时间:2023-03-31 19:56:43 vue.js

描述一个之前做过的需求。一个订单详情页面同时有多个复制按钮。点击复制按钮,分别复制相应的文本和触发相应的事件。看了官网的描述,官方推荐的写法如下:Copytoclipboard这种写法用于只有一个复制按钮的时候没有问题,但是我现在遇到的需求是页面中有N个复制按钮,点击时出现重复复制前面传入文本的问题。看了很多关于使用clipboard.js的文章,发现还是没有找到很好的解决办法。我摆弄了一组解决方案并附上了代码。如果遇到类似的需求,也可以尝试从这个方向解决问题。//模板部分,省略多个相似的按钮定义//couponItem是外层传入的优惠券代码对象,该对象只包含优惠券代码和一个状态值复制importClipboardfrom'clipboard'//需要提前npm插件//methodssectioncopyText(copyId,status){letclipboard=newClipboard(copyId,{text:function(trigger){returntrigger.getAttribute('data-clipboard-text')}})clipboard.on('成功',e=>{if(status){this.doSomething()//执行相关操作console.log('优惠券代码复制成功')}else{console.log('Copysuccessful')}clipboard.destroy()})clipboard.on('error',e=>{clipboard.destroy()})}//调用该方法后必须销毁剪贴板,所以以免在后续调用中弄乱复制的值,但ton中的传入id是自定义生成的唯一值,传入参数可以根据实际情况自定义。(但必须保证其唯一性)如果大家有更简单的解决方案,欢迎大家留言交流,共同学习。为了爱与和平。我的邮箱是747379968@qq.com,欢迎指教。:)