美文网首页
MiniP框架概要 -- 视图层 -- 事件

MiniP框架概要 -- 视图层 -- 事件

作者: liwuwuzhi | 来源:发表于2017-11-29 17:01 被阅读0次
    image.png

    事件对象

    image.png

    事件分类

    事件分为冒泡事件和非冒泡事件:

    冒泡事件:当一个组件上的事件被触发后,该事件会向父节点传递。
    非冒泡事件:当一个组件上的事件被触发后,该事件不会向父节点传递。
    WXML的冒泡事件列表:

    类型 触发条件 最低版本
    touchstart 手指触摸动作开始
    touchmove 手指触摸后移动
    touchcancel 手指触摸动作被打断,如来电提醒,弹窗
    touchend 手指触摸动作结束
    tap 手指触摸后马上离开
    longpress 手指触摸后,超过350ms再离开,如果指定了事件回调函数并触发了这个事件,tap事件将不被触发 1.5.0
    longtap 手指触摸后,超过350ms再离开(推荐使用longpress事件代替)
    transitionend 会在 WXSS transition 或 wx.createAnimation 动画结束后触发
    animationstart 会在一个 WXSS animation 动画开始时触发
    animationiteration 会在一个 WXSS animation 一次迭代结束时触发
    animationend 会在一个 WXSS animation 动画完成时触发

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

    事件绑定

    事件绑定以bindcatch开头,然后紧跟上事件类型,例如bindTab , catchtouchstart
    自版本1.5.0起,可写成bind:Tab , catch:touchstart

    bindcatch开头有什么不同呢?
    bind事件绑定不会阻止冒泡事件向上冒泡,catch事件绑定可以阻止冒泡事件向上冒泡。

    如下面代码:

    <view id="outer" bindtap="handleTap1">
     外层
      <view id="middle" catchtap="handleTap2">
        中层
        <view id="inner" bindtap="handleTap3">
         内层
        </view>
      </view>
    </view>
    

    点击“内层” 会先后调用事件handleTap1和handleTap2(因为tap事件会冒泡到“中层”,而“中层”阻止了tap事件再向上冒泡);
    点击“中层” 会触发handleTap2;
    点击“外层” 会触发handleTap1;

    事件的捕获阶段

    自版本1.5.0起,触摸类事件支持捕获阶段。捕获阶段位于冒泡阶段之前,且在捕获阶段中,事件到达节点的顺序与冒泡阶段恰好相反。
    capture-bind : 需要在捕获阶段监听事件;
    capture-catch: 中断捕获阶段和取消冒泡阶段;
    在下面的代码中,点击 inner view 会先后调用handleTap2、handleTap4、handleTap3、handleTap1。

    <view id="outer" bind:touchstart="handleTap1" capture-bind:touchstart="handleTap2">
      outer view
      <view id="inner" bind:touchstart="handleTap3" capture-bind:touchstart="handleTap4">
        inner view
      </view>
    </view>
    

    如果将上面代码中的第一个capture-bind改为capture-catch,将只触发handleTap2。

    <view id="outer" bind:touchstart="handleTap1" capture-catch:touchstart="handleTap2">
      outer view
      <view id="inner" bind:touchstart="handleTap3" capture-bind:touchstart="handleTap4">
        inner view
      </view>
    </view>
    

    相关文章

      网友评论

          本文标题:MiniP框架概要 -- 视图层 -- 事件

          本文链接:https://www.haomeiwen.com/subject/eloubxtx.html