После отображения элемента с помощью v-show функция обратного вызова из моей директивы сразу же вызывается директивой
<div
v-show="visible"
v-click-outside="log"
class="box">
YEAH, you can see me now
</div>
let clickHandler
const clickOutside = {
bind: function(el, binding, vnode) {
clickHandler = e => {
if (!el.contains(e.target)) {
binding.value(e)
}
}
window.addEventListener('click', clickHandler)
},
unbind: function(el, binding) {
window.removeEventListener('click', clickHandler)
}
}
export default clickOutside
как я могу это предотвратить?
live demo
хорошо, если я оберну addEventlistener внутри setTimeout, он будет работать, но это правильный способ решить проблему?Потому что ожидание 1сек мне кажется странным ...
setTimeout(()=>{
window.addEventListener("click", clickHandler);
}, 1000)