收藏
回答

自定义组件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事件。

最后一次编辑于  2018-11-19
回答关注问题邀请回答
收藏

1 个回答

  • 小程序技术专员-LastLeaf
    小程序技术专员-LastLeaf
    2018-11-19

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

    2018-11-19
    赞同
    回复 6
    • 辣辣|NANA
      辣辣|NANA
      01-10

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

      01-10
      回复
    • 小程序技术专员-LastLeaf
      小程序技术专员-LastLeaf
      01-14回复辣辣|NANA

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

      01-14
      回复
    • MissYoung
      MissYoung
      08-28

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

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

      08-28
      回复
    • 小程序技术专员-LastLeaf
      小程序技术专员-LastLeaf
      08-29回复MissYoung
      没完全看懂你的注释说明。不过和楼主的问题相近,你的 customevent 和 tap 事件是【相互独立】的, catch 住其中一个对另一个的冒泡是没有影响的。
      08-29
      回复
    • MissYoung
      MissYoung
      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>


      08-30
      回复
    查看更多(1)