文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php教程>vuejs怎么实现复制功能

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功能

4dce98adb2201d91830ddfd873eb10d.png

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爱好者其它相关文章!

相关阅读更多 +
最近更新
排行榜 更多 +
元梦之星最新版手游

元梦之星最新版手游

棋牌卡牌 下载
我自为道安卓版

我自为道安卓版

角色扮演 下载
一剑斩仙

一剑斩仙

角色扮演 下载