自定义文字复制剪贴指令
This commit is contained in:
		
							parent
							
								
									9d094587b3
								
							
						
					
					
						commit
						19ac02fd70
					
				| @ -3,10 +3,12 @@ import hasPermi from './permission/hasPermi' | |||||||
| import dialogDrag from './dialog/drag' | import dialogDrag from './dialog/drag' | ||||||
| import dialogDragWidth from './dialog/dragWidth' | import dialogDragWidth from './dialog/dragWidth' | ||||||
| import dialogDragHeight from './dialog/dragHeight' | import dialogDragHeight from './dialog/dragHeight' | ||||||
|  | import clipboard from './module/clipboard' | ||||||
| 
 | 
 | ||||||
| const install = function(Vue) { | const install = function(Vue) { | ||||||
|   Vue.directive('hasRole', hasRole) |   Vue.directive('hasRole', hasRole) | ||||||
|   Vue.directive('hasPermi', hasPermi) |   Vue.directive('hasPermi', hasPermi) | ||||||
|  |   Vue.directive('clipboard', clipboard) | ||||||
|   Vue.directive('dialogDrag', dialogDrag) |   Vue.directive('dialogDrag', dialogDrag) | ||||||
|   Vue.directive('dialogDragWidth', dialogDragWidth) |   Vue.directive('dialogDragWidth', dialogDragWidth) | ||||||
|   Vue.directive('dialogDragHeight', dialogDragHeight) |   Vue.directive('dialogDragHeight', dialogDragHeight) | ||||||
|  | |||||||
							
								
								
									
										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; | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | } | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 RuoYi
						RuoYi