您好,登錄后才能下訂單哦!
第一步 創(chuàng)建點(diǎn)擊對(duì)象頁(yè)面元素,并綁定業(yè)務(wù)數(shù)據(jù)。
<el-button type="text" size="mini" class="copy-button"
??:data-resource-type="scope.data.resource\_type"
??:data-resource-id="scope.data.resource\_id">
??復(fù)制鏈接
</el-button>
第二步 引入clipboard.js。
import ClipboardJS from 'clipboard';
第三步 創(chuàng)建ClipboardJS對(duì)象實(shí)例。
mounted() {
??this.clipboard = new ClipboardJS('.copy-button', {
????text: () => this.copyLink
??});
? ...
}
第四步:替換clipboard對(duì)象實(shí)例的默認(rèn)的onClick事件。
mounted() {
??...
??const that = this;
??const oldOnClick = this.clipboard.onClick;
??this.clipboard.onClick = function onClick(e) {
????const resource\_type = e.delegateTarget.getAttribute('data-resource-type');
????const resource\_id = e.delegateTarget.getAttribute('data-resource-id');
????console.log('resource\_type, resource\_id is', resource\_type, resource\_id)
????that.$axios
??????.post(APIS.Link, {
????????type: 'h6\_ugc\_detail',
????????params: {ugc\_id: resource\_id, ugc\_type: resource\_type},
????????\_csrf: that.$store.state.csrfToken
??????})
??????.then(res => {
????????that.copyLink = res.data.data.link;
????????oldOnClick.bind(that.clipboard)(e);
??????})
??????.catch(err => {
??????});
??};
??...
}
第五步:監(jiān)聽(tīng)并處理操作成功與失敗事件。
mounted() {
??...
??this.clipboard.on('success', this.clipOptions.success);
??this.clipboard.on('error', this.clipOptions.error);
}
其中clipOptions類(lèi)似如下:
computed: {
??clipOptions() {
????return {
??????success: (e) => {
????????this.$message.success('復(fù)制成功');
??????},
??????error: () => {
????????this.$message.error('復(fù)制失敗');
??????}
????};
??},
??...
}
第六步:vue生命周期結(jié)束時(shí),銷(xiāo)毀clipboard對(duì)象。
unmounted() {
??this.clipboard && this.clipboard.destroy();
}
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。