uni-app 不支持动态的阻止冒泡

发布于 1周前 作者 sinazl 来自 Uni-App

uni-app 不支持动态的阻止冒泡

1 回复

uni-app 中,确实不支持直接通过动态绑定的方式来阻止事件冒泡。uni-app 的事件绑定机制是基于微信小程序的,而微信小程序的事件绑定语法是固定的,不支持在运行时动态改变事件的行为。

阻止事件冒泡的方式

uni-app 中,阻止事件冒泡通常是通过在事件处理函数中调用 event.stopPropagation() 方法来实现的。你可以在事件处理函数中根据条件来决定是否阻止事件冒泡。

示例代码

<template>
  <view [@tap](/user/tap)="handleTap">
    <view [@tap](/user/tap)="handleInnerTap">点击我</view>
  </view>
</template>

<script>
export default {
  methods: {
    handleTap(event) {
      console.log('外层点击事件');
    },
    handleInnerTap(event) {
      console.log('内层点击事件');
      if (someCondition) {
        event.stopPropagation(); // 根据条件阻止事件冒泡
      }
    }
  }
}
</script>

动态阻止冒泡的替代方案

如果你需要根据某些条件动态地阻止事件冒泡,可以在事件处理函数中进行判断,并手动调用 event.stopPropagation()

<template>
  <view [@tap](/user/tap)="handleTap">
    <view [@tap](/user/tap)="handleInnerTap">点击我</view>
  </view>
</template>

<script>
export default {
  data() {
    return {
      shouldStopPropagation: false
    };
  },
  methods: {
    handleTap(event) {
      console.log('外层点击事件');
    },
    handleInnerTap(event) {
      console.log('内层点击事件');
      if (this.shouldStopPropagation) {
        event.stopPropagation(); // 根据条件阻止事件冒泡
      }
    }
  }
}
</script>
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!