directives: { clickoutside: { bind(el, binding, vnode) { function documentHandler(e) { // 若是是元素本體則返回 if (el.contains(e.target)) return false; if (binding.expression) { // 有綁定函數,則執行 binding.value(e); } } el.__vueClickOutside__ = documentHandler; document.addEventListener('click', documentHandler); }, update() {}, unbind(el, binding) { document.removeEventListener('click', el.__vueClickOutside__); delete el.__vueClickOutside__; }, }, }
使用vue
<div v-clickoutside="hideTree"></div>