自定义文字复制剪贴指令
This commit is contained in:
		
							
								
								
									
										54
									
								
								ruoyi-ui/src/directive/module/clipboard.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								ruoyi-ui/src/directive/module/clipboard.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,54 @@ | ||||
| /** | ||||
| * v-clipboard 文字复制剪贴 | ||||
| * Copyright (c) 2021 ruoyi | ||||
| */ | ||||
|  | ||||
| import Clipboard from 'clipboard' | ||||
| export default { | ||||
|   bind(el, binding, vnode) { | ||||
|     switch (binding.arg) { | ||||
|       case 'success': | ||||
|         el._vClipBoard_success = binding.value; | ||||
|         break; | ||||
|       case 'error': | ||||
|         el._vClipBoard_error = binding.value; | ||||
|         break; | ||||
|       default: { | ||||
|         const clipboard = new Clipboard(el, { | ||||
|           text: () => binding.value, | ||||
|           action: () => binding.arg === 'cut' ? 'cut' : 'copy' | ||||
|         }); | ||||
|         clipboard.on('success', e => { | ||||
|           const callback = el._vClipBoard_success; | ||||
|           callback && callback(e); | ||||
|         }); | ||||
|         clipboard.on('error', e => { | ||||
|           const callback = el._vClipBoard_error; | ||||
|           callback && callback(e); | ||||
|         }); | ||||
|         el._vClipBoard = clipboard; | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   update(el, binding) { | ||||
|     if (binding.arg === 'success') { | ||||
|       el._vClipBoard_success = binding.value; | ||||
|     } else if (binding.arg === 'error') { | ||||
|       el._vClipBoard_error = binding.value; | ||||
|     } else { | ||||
|       el._vClipBoard.text = function () { return binding.value; }; | ||||
|       el._vClipBoard.action = () => binding.arg === 'cut' ? 'cut' : 'copy'; | ||||
|     } | ||||
|   }, | ||||
|   unbind(el, binding) { | ||||
|     if (!el._vClipboard) return | ||||
|     if (binding.arg === 'success') { | ||||
|       delete el._vClipBoard_success; | ||||
|     } else if (binding.arg === 'error') { | ||||
|       delete el._vClipBoard_error; | ||||
|     } else { | ||||
|       el._vClipBoard.destroy(); | ||||
|       delete el._vClipBoard; | ||||
|     } | ||||
|   } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user