UNPKG

vxe-table-select-area

Version:

一个基于 vxe-table 的可区域选中复制、粘贴的组件

78 lines (66 loc) 1.57 kB
/* eslint-disable prefer-const */ /* hook system */ export default class Hooks { constructor () { // ... this.hooks = { /* table-scroll1:[ function(){}, function(){} ], table-scroll2:[ function(){}, function(){} ] */ } } /** * Add listener to plugin hooks system. * * @param {string} hookName The hook name. * @param {Function} callback The listener function to add. */ addHook (hookName, callback) { let hooks if (!this.hooks[hookName]) { this.hooks[hookName] = [] } hooks = this.hooks[hookName] // exclude repeat hook let isRepeat = false for (let i = 0; i < hooks.length; i++) { if (hooks[i] === callback) { isRepeat = true break } } if (isRepeat) { console.warn(`Repeat hook name:${hookName}`) } else { hooks.push(callback) } } /** * Trigger hook. * * @param {string} hookName The hook name. * @param {Argument} args */ triggerHook (hookName) { const hooks = this.hooks[hookName] if (hooks && hooks.length) { const args = Array.prototype.slice.call(arguments) hooks.forEach((hook) => { // exclude hookName param hook.apply(null, args.slice(1)) }) } // else { // console.warn(`Can't find hook name:${hookName}`); // } } }