vue点击页面任意位置让子组件消失

我记得用原生js是document.body.onclick = function(){} 用vue在根div加了一个点击事件 试了一下也能消失 但是不知道这种方法正规吗?不知道还有其他的办法吗

<template>
 <div @click="none">
      <div id="drop-down">
        <Dropdown v-if="dd"></Dropdown>
      </div>
 </div>
</template>
export default {
  name: 'Blog',
  data () {    return {
      dd: true
    }
  },
  methods: {
    none () {      this.dd = false
    }
  },


慕沐林林
浏览 2328回答 1
1回答

慕斯709654

建议放到组件里面,比较方便代码复用。beforeMount()&nbsp;{&nbsp;&nbsp;this._close&nbsp;=&nbsp;e&nbsp;=>&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;如果点击发生在当前组件内部,则不处理 &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(this.$el.contains(e.target))&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return; &nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;this.$emit('hide'); &nbsp;&nbsp;};&nbsp;&nbsp; &nbsp;&nbsp;document.body.addEventListener('click',&nbsp;this._close); }, beforeDestroy()&nbsp;{&nbsp;&nbsp;document.body.removeEventListener('click',&nbsp;this._close);&nbsp;&nbsp; }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Vue.js