UNPKG

wangbd-myui

Version:

MY前端基础框架核心组件库

78 lines (68 loc) 2.05 kB
/** * 复制内容到剪切板 * @module $ui/directives/clipboard * @author 朱启成 */ // 引入clipboard import Clipboard from 'clipboard'; /** * * 指令 v-clipboard * @param {String|Object} options * @param {string} [options.text] 需要复制的文本 * @param {HTMLElement} [options.target] 复制的目标元素 * @param {string} [options.action] 复制的的动作,cut / copy * * @example * <el-button v-clipboard="复制的文本">复制</el-button> * <el-button v-clipboard="{text:'复制的文本'}">复制</el-button> * <el-button v-clipboard="{text: function(){ return '复制的文本' }}">复制</el-button> */ export default { /** * 元素在页面渲染时回调,在这里进行实例化clipboards * @param {HtmlElement} el 指令的宿主元素 * @param {Object} binding Vue指令binding对象 */ bind(el, binding) { const value = typeof binding.value !== 'object' ? {text: binding.value} : (binding.value || {}); const options = {...value} if (value.text) { options.text = typeof value.text === 'function' ? value.text : function () { return value.text } } if (value.target) { options.target = typeof value.target === 'function' ? value.target : function () { return value.target } } if (value.action) { options.action = typeof value.action === 'function' ? value.action : function () { return value.action } } const clipboard = new Clipboard(el, options) clipboard.on('success', (e) => { value.success && value.success(e) }) clipboard.on('error', (e) => { value.error && value.error(e) }) el.__clipboards__ = clipboard }, /** * 元素在页面销毁时回调,在这里销毁clipboards实例 * @param el */ unbind(el) { const instance = el.__clipboards__ instance && instance.destroy() } }