ElementUI + clipboard 模态弹出框复制链接失效问题

ElementUI 模态弹出框复制链接失效问题

需求是这样的,页面上有一个复制链接的按钮,点击之后弹出模态框,上面有二维码和复制链接按钮。
在这里插入图片描述
点击复制链接会通过这个方法打开模态框

      showCopyUrl(url) {       
            this.$modal.show({
                component: CopyUrl,   // 我自己写的复制链接组件
                props: {
                    url,
                },
            });
        },

复制链接模态框如下图所示。

在这里插入图片描述
如图所示,点击复制出链接按钮,我想把输入框里的url拷贝到粘贴板,我用的是Clipboard.js。
一开始我的代码是这么写的
html

<el-input id="shareUrl" v-model="url" v-show="true" readonly>{{url}}</el-input>
<el-button type="primary"  id='copy-btn' data-clipboard-target="#shareUrl" @click="copyUrl($event)" class="btn">复制</el-button>

js

copyUrl(event) {
     var clipboard = new Clipboard('#copy-btn');
     clipboard.on('success', e => {
         this.$message({
             message: '复制成功',
             type: 'success',
             duration:'1000'
         });
         clipboard.destroy();
     });
     clipboard.on('error', e => {
         this.$message({
             message: '复制失败',
             type: 'error',
             duration:'1000'
         });
         clipboard.destroy();
     })
 },

无奈点击复制链接页面一点反应也没有,失败的回掉也没有执行,而我看之前别人是在el-dialog里面这么写是没有问题的。于是我搜了一下网上大神的回答说 模态框修改了焦点。 (我: ??)

后来经过疯狂的google,找到了一个靠谱的解决方案,代码如下
html

<el-input id="shareUrl" v-model="url" v-show="true" readonly>{{url}}</el-input>
<el-button type="primary"  ref='copy' data-clipboard-target="#shareUrl" @click="copyUrl($event)" class="btn">复制</el-button>

js

 copyUrl(event) {
     // debugger
     let copy=this.$refs.copy.$el                 // 这里直接取dom对象
     let clipboard =  new Clipboard(copy);
     clipboard.on('success', e => {
         this.$message({
             message: '复制成功',
             type: 'success',
             duration:'1000'
         });
         clipboard.destroy();
     });
     clipboard.on('error', e => {
         this.$message({
             message: '复制失败',
             type: 'error',
             duration:'1000'
         });
         clipboard.destroy();
     })
     clipboard.onClick(event)                  // 最后执行一次onClick()方法
 },
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值