vuejs: cb-функция из директивы сразу вызывается после отображения элемента с помощью v-show - PullRequest
0 голосов
/ 18 апреля 2019

После отображения элемента с помощью 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)
...