收藏
回答

为何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控件输入的时候,控制台并没有输出。

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

1 个回答

  • Maverick
    Maverick
    2019-02-12

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


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

    2019-02-12
    有用
    回复 3
    • 2019-02-12

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

      2019-02-12
      回复
    • Maverick
      Maverick
      2019-02-12回复

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


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

      2019-02-12
      回复
    • 2019-02-12

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

      2019-02-12
      回复
登录 后发表内容