您好,登錄后才能下訂單哦!
第一步 創建點擊對象頁面元素,并綁定業務數據。
<el-button type="text" size="mini" class="copy-button"
??:data-resource-type="scope.data.resource\_type"
??:data-resource-id="scope.data.resource\_id">
??復制鏈接
</el-button>
第二步 引入clipboard.js。
import ClipboardJS from 'clipboard';
第三步 創建ClipboardJS對象實例。
mounted() {
??this.clipboard = new ClipboardJS('.copy-button', {
????text: () => this.copyLink
??});
? ...
}
第四步:替換clipboard對象實例的默認的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 => {
??????});
??};
??...
}
第五步:監聽并處理操作成功與失敗事件。
mounted() {
??...
??this.clipboard.on('success', this.clipOptions.success);
??this.clipboard.on('error', this.clipOptions.error);
}
其中clipOptions類似如下:
computed: {
??clipOptions() {
????return {
??????success: (e) => {
????????this.$message.success('復制成功');
??????},
??????error: () => {
????????this.$message.error('復制失敗');
??????}
????};
??},
??...
}
第六步:vue生命周期結束時,銷毀clipboard對象。
unmounted() {
??this.clipboard && this.clipboard.destroy();
}
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。