我个人的理解是,小程序中的事件都是从顶层组件往下传递,直到被catch为止。
而我在练习的时候感觉也是这样的,如果未被catch住,那么事件就会一直被capture到。
但是不知道为什么我尝试capture input控件的input事件时失败了。这是为什么?
下面是我写的代码
<view id= "inner" capture-bind:input= "handleInput" > inner view <input /> </view> |
handleInput: function (evt){ console.log( 'handleInput' ) } |
当我在input控件输入的时候,控制台并没有输出。
input是非冒泡事件,不会向上传递
https://developers.weixin.qq.com/miniprogram/dev/framework/view/wxml/event.html
我的理解是事件分为冒泡和捕获两个阶段,捕获阶段的事件是向下传递的。非冒泡事件没有这两个阶段么?我没有看到文档中有关非冒泡事件的详细定义和说明也看不到源码,所以不太了解。
注:除上表之外的其他组件自定义事件如无特殊声明都是非冒泡事件,如
<form/>
的submit
事件,<input/>
的input
事件,<scroll-view/>
的scroll
事件,(详见各个组件)自基础库版本 1.5.0 起,触摸类事件支持捕获阶段。(触摸类事件)
明白了,谢谢!我没有注意到最后一句话,现在了解了