可以点开看看这个,个人感觉不错
添加链接描述
export default {
//绑定
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('mousedown', documentHandler);//click 会造成 窗口移动的时候,当前下拉还继续存在的bug,改成mousedown
},
//更新
update () {
},
//取消绑定
unbind (el, binding) {
document.removeEventListener('mousedown', el.__vueClickOutside__);
delete el.__vueClickOutside__;
}
};
具体的原理,后续更新…