vue单击空白部分关闭组件

vue单击空白部分关闭组件

子组件html部分
<div class='add_address' @click="closeNullModule($event)">
    <div class="content" ref="content"></div>
  </div>
子组件js部分
props: {
    value: {
      type: Boolean,
      default: false
    },
}

methods:{
   closeNullModule(e) {
      this.$nextTick(() => {
        let content = this.$refs.content
        if (content && !content.contains(e.target)) {
          this.$emit('update:value', false)
        }
      })
    }
 }
父组件调用
    <tabTime :vaule.sync="tabVal"></tabTime>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue 2 中实现 Popup 弹出层点击空白关闭的功能,可以通过以下步骤实现: 1. 在 Popup 组件中添加一个遮罩层,并绑定一个点击事件,当点击事件触发时,执行关闭 Popup 的方法。 2. 在子组件中添加一个 `$emit` 方法,当点击子组件内部的区域时,触发 `$emit` 方法,向父组件发送一个事件。 3. 在父组件中监听子组件发送的事件,当事件触发时,执行关闭 Popup 的方法。 下面是一个示例代码: ```html <!-- Popup 组件 --> <template> <div class="popup" v-show="visible"> <div class="mask" @click="close"></div> <div class="content"> <slot></slot> </div> </div> </template> <script> export default { props: { visible: { type: Boolean, default: false } }, methods: { close() { this.$emit('close'); } } }; </script> <!-- 子组件 --> <template> <div class="child" @click="$emit('clickInside')"> ... </div> </template> <!-- 父组件 --> <template> <div> <popup :visible="showPopup" @close="closePopup"> <child @clickInside="stopPropagation"></child> </popup> </div> </template> <script> import Popup from './Popup.vue'; import Child from './Child.vue'; export default { components: { Popup, Child }, data() { return { showPopup: false }; }, methods: { closePopup() { this.showPopup = false; }, stopPropagation() { // 阻止事件冒泡 event.stopPropagation(); } } }; </script> ``` 在这个示例中,当点击 Popup 组件外的区域时,会触发 Popup 组件中的 `close` 方法,从而关闭 Popup 组件。当点击 Popup 组件内部的子组件时,会触发子组件中的 `$emit` 方法,从而向父组件发送一个事件。在父组件中通过监听子组件发送的事件来阻止事件冒泡,从而避免触发 Popup 组件中的 `close` 方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值