Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | /**
* @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__;
}
};
|