收藏
回答

自定义组件bubbles为false时并没有阻止事件冒泡

给组件自定义事件时,设置bubbles为true和false表现一致,并没有阻止事件冒泡。

this.triggerEvent('customevent',{e},{  });

this.triggerEvent('customevent',{ e }, { bubbles:true });


https://developers.weixin.qq.com/s/QwB5g2mL7D4z


希望只触发 customevent 事件,不触发外层view上绑定的tap事件。

回答关注问题邀请回答
收藏

2 个回答

  • LastLeaf
    LastLeaf
    2018-11-19

    使用 triggerEvent 将触发另一个与 tap 无关的独立事件。如果需要阻止 touch 事件冒泡,请使用 catchtap 。

    2018-11-19
    有用
    回复 6
    • 2019-01-10

      catchtap 并没有效果,我是希望点击组件里的元素时,不触发外层包含view的tap事件。

      2019-01-10
      回复
    • LastLeaf
      LastLeaf
      2019-01-14回复

      catchtap 会阻止 tap 这个事件本身向上冒泡。如果碰到了没有阻止的情况,麻烦给个具体的代码片段看下。

      2019-01-14
      回复
    • MissYoung
      MissYoung
      2019-08-28

      麻烦看看这个代码片段https://developers.weixin.qq.com/s/ccxAZXmp7VaI

      自定义组件的catch事件还是会冒泡影响父组件的点击事件

      2019-08-28
      回复
    • LastLeaf
      LastLeaf
      2019-08-29回复MissYoung
      没完全看懂你的注释说明。不过和楼主的问题相近,你的 customevent 和 tap 事件是【相互独立】的, catch 住其中一个对另一个的冒泡是没有影响的。
      2019-08-29
      回复
    • MissYoung
      MissYoung
      2019-08-30回复LastLeaf

      注释你可以忽略。。。

      customevent 和 tap 事件是【相互独立】的这句话不理解为什么?他们不是父子关系吗?冒泡不是就是针对父子事件来说的吗?

      看官网给的例子:

      index.wxml:

      <view>
      <another-component bindcustomevent="pageEventListener1">
      <my-component bindcustomevent="pageEventListener2"></my-component>
      </another-component>
      </view>


      my-component.js:

      Component({
      properties: {},
      methods: {
      onTap: function () {
      this.triggerEvent('customevent', {}) // 只会触发 pageEventListener2
      this.triggerEvent('customevent', {}, { bubbles: true }) // 会依次触发 pageEventListener2 、 pageEventListener1
      this.triggerEvent('customevent', {}, { bubbles: true, composed: true }) // 会依次触发 pageEventListener2 、 anotherEventListener 、 pageEventListener1
      }
      }
      })


      问题:bubbles的控制只是针对自定义组件套自定义组件组件吗?如以上例程给的another-component套my-component

      如下view套自定义组件bar就不行吗???

      <view bindTap="clickTopFoo">

      <bar catchcustomevent="onTopSubmit"></bar>

      </view>


      2019-08-30
      回复
    查看更多(1)
  • Maple 🍁
    Maple 🍁
    2021-08-13

    他的意思是自定义组件的事件,你想阻止冒泡 在自定义组件上加一个catch:tap=""

    2021-08-13
    有用
    回复
登录 后发表内容