Vue.directive('clickout', {
bind(el, binding, vnode) {
function clickHandler(e) {
if (el.contains(e.target)) {
return false;
}
if (binding.expression) {
console.log("接收到的 value 为: " + binding.value)
let that = vnode.context
that[binding.arg](binding.value)
}
}
el.__vueClickOutside__ = clickHandler;
document.addEventListener('click', clickHandler);
},
update() {},
unbind(el, binding) {
document.removeEventListener('click', el.__vueClickOutside__);
delete el.__vueClickOutside__;
}
})
<div v-for="(item, index) in List"
:key="index">
<div v-clickout:handleClose="index"></div>
</div>
handleClose(index){}