Vue自定义指令实现复制功能

复制代码
import Vue from 'vue'
import store from '../store'

function copyMethod(value) {
 let text = ''
 switch (typeof value) {
  case 'number':
   text = value.toString()
   break
  case 'object':
   text = JSON.stringify(value)
   break
  default:
   text = value
   break
 }
 let input = document.createElement('textarea')
 input.value = text
 document.body.appendChild(input)
 input.select()
 document.execCommand('copy')
 store.commit('success_msg', '复制成功')
 document.body.removeChild(input)
 input = null
}

Vue.directive('copy', {
 bind(el, binding) {
  el.handler = () => copyMethod(binding.value)
  el.addEventListener('click', el.handler)
 },
 // 更新参数时更新监听函数
 componentUpdated(el, binding) {
  el.removeEventListener('click', el.handler)
  el.handler = () => copyMethod(binding.value)
  el.addEventListener('click', el.handler)
 },
 unbind(el) {
  el.removeEventListener('click', el.handler)
  el.handler = null
 },
})
复制代码
1、main.js中引入自定义指令
import './directives'
2、组件中使用
v-copy="item.name"

 

posted @   yw3692582  阅读(83)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示