收藏
回答

为何input事件不能在父组件捕获?

问题模块
教程反馈

我个人的理解是,小程序中的事件都是从顶层组件往下传递,直到被catch为止。

而我在练习的时候感觉也是这样的,如果未被catch住,那么事件就会一直被capture到。

但是不知道为什么我尝试capture input控件的input事件时失败了。这是为什么?


下面是我写的代码

<view id="inner"capture-bind:input="handleInput">
  inner view
  <input/>
</view>
handleInput: function (evt){
    console.log('handleInput')
  }

当我在input控件输入的时候,控制台并没有输出。

最后一次编辑于  02-12  (未经腾讯允许,不得转载)
邀请回答
复制链接收藏投诉关注问题回答

1 个回答

  • Maverick
    Maverick
    02-12

    input是非冒泡事件,不会向上传递


    https://developers.weixin.qq.com/miniprogram/dev/framework/view/wxml/event.html

    02-12
    赞同
    回复 3
    • 豪仔
      豪仔
      02-12

      我的理解是事件分为冒泡和捕获两个阶段,捕获阶段的事件是向下传递的。非冒泡事件没有这两个阶段么?我没有看到文档中有关非冒泡事件的详细定义和说明也看不到源码,所以不太了解。

      02-12
      回复
    • Maverick
      Maverick
      02-12回复豪仔

      注:除上表之外的其他组件自定义事件如无特殊声明都是非冒泡事件,如<form/>submit事件,<input/>input事件,<scroll-view/>scroll事件,(详见各个组件)


      自基础库版本 1.5.0 起,触摸类事件支持捕获阶段。(触摸类事件)

      02-12
      回复
    • 豪仔
      豪仔
      02-12

      明白了,谢谢!我没有注意到最后一句话,现在了解了

      02-12
      回复