@cgj/k-view
Version:
``` npm i @cgj/k-view ```
52 lines (47 loc) • 1.08 kB
JavaScript
/**
* @description 外部点击自定义指令
* @author SoldierAb
* @since 19-01-11
* @example
*
* <template>
* <div v-click-outside="func"></div>
* </template>
*
* <script>
* import clickOutside from '../utils/clickOutside';
*
* //全局注册
* Vue.directive('clickOutside',clickOutside);
*
* or ---
*
* //局部注册
*
* export default{
* directives:{clickOutside},
* }
*
* </script>
*
*/
const func=(el, binding, vnode)=>{
const documentHandler = (e) => {
if (el.contains(e.target)) return false;
if (binding.expression) binding.value(e);
}
el.__vueClickOutside__ = documentHandler;
document.addEventListener('click', documentHandler);
}
export default {
bind (el, binding, vnode) {
// return func(el, binding, vnode);
},
update (el, binding, vnode) {
return func(el, binding, vnode);
},
unbind (el, binding) {
document.removeEventListener('click', el.__vueClickOutside__);
delete el.__vueClickOutside__;
}
};