vuejs怎么实现复制功能
时间:2021-11-06
来源:互联网
今天PHP爱好者为您带来vuejs实现复制功能的方法:1、创建一个copyComm.js的文件;2、创建一个directives.js文件来注册所有的全局指令;3、通过“return{copyText:'...'}”实现复制即可。希望对大家有所帮助。
本文操作环境:windows7系统、vue2.9.6版,DELL G3电脑。
vuejs怎么实现复制功能?
vue.js实现一键copy功能
1,首先建一个copyComm.js的文件
const vCopy = { // 名字爱取啥取啥
/*
bind 钩子函数,第一次绑定时调用,可以在这里做初始化设置
el: 作用的 dom 对象
value: 传给指令的值,也就是我们要 copy 的值
*/
bind(el, { value }) {
el.$value = value; // 用一个全局属性来存传进来的值,因为这个值在别的钩子函数里还会用到
el.handler = () => {
if (!el.$value) {
// 值为空的时候,给出提示,我这里的提示是用的 ant-design-vue 的提示,你们随意
console.log('无复制内容');
return;
}
// 动态创建 textarea 标签
const textarea = document.createElement('textarea');
// 将该 textarea 设为 readonly 防止 iOS 下自动唤起键盘,同时将 textarea 移出可视区域
textarea.readOnly = 'readonly';
textarea.style.position = 'absolute';
textarea.style.left = '-9999px';
// 将要 copy 的值赋给 textarea 标签的 value 属性
textarea.value = el.$value;
// 将 textarea 插入到 body 中
document.body.appendChild(textarea);
// 选中值并复制
textarea.select();
textarea.setSelectionRange(0, textarea.value.length);
const result = document.execCommand('Copy');
if (result) {
console.log('复制成功');
}
document.body.removeChild(textarea);
};
// 绑定点击事件,就是所谓的一键 copy 啦
el.addEventListener('click', el.handler);
},
// 当传进来的值更新的时候触发
componentUpdated(el, { value }) {
el.$value = value;
},
// 指令与元素解绑的时候,移除事件绑定
unbind(el) {
el.removeEventListener('click', el.handler);
},
};
export default vCopy;
2,在建一个directives.js文件来注册所有的全局指令
import copy from './copyComm.js';
// 自定义指令
const directives = {
copy,
};
// 这种写法可以批量注册指令
export default {
install(Vue) {
Object.keys(directives).forEach((key) => {
Vue.directive(key, directives[key]);
});
},
};
3,在main.js注册
import Vue from 'vue';
import Directives from './directives';
Vue.use(Directives);
4,vue文件使用
<template>
<p >
<button v-copy="copyText">拷贝</button>
</p>
</template>
<script>
export default {
data(){
return {
copyText:'要copy的内容'
}
},
methods: {
init () {
},
},
watch: {},
props: [],
components: {},
computed: {},
mounted () {
_this = this;
_this.init();
},
}
</script>
以上就是vuejs怎么实现复制功能的详细内容,更多请关注php爱好者其它相关文章!
-
比特币支持者PlanB猛烈抨击以太坊:“中心化且预挖的垃圾币” 时间:2025-05-01
-
比特币鲸鱼吸收了新挖矿比特币供应的300%—下一个目标是10万美元吗? 时间:2025-05-01
-
比特币交易员友情提示:BTC价格涨势或在9万美元位置停滞 时间:2025-05-01
-
喜讯微策略Strategy又砸5.5亿美元购买比特币!总持有量突破53.8万枚 时间:2025-05-01
-
比特币再度飙升至9万美元挺进!后续币价走势分析师看法分歧 时间:2025-05-01
-
到2030年,1比特币的价值将是多少?BTC真的能达到100万美元吗? 时间:2025-05-01
今日更新
-
php怎么实现返回不刷新页面
阅读:18
-
php怎么实现浏览记录
阅读:18
-
小程序中怎么对网络请求进行二次封装
阅读:18
-
浅析小程序中的插槽、父子组件通讯的几种方式
阅读:18
-
php中变量的设置方法
阅读:18
-
Mysql索引失效怎么办?失效原因浅析
阅读:18
-
vuejs怎么调试
阅读:18
-
php类的写法是什么
阅读:18
-
为什么css3要加前缀
阅读:18
-
元宇宙的定义是什么
阅读:18