zoukankan      html  css  js  c++  java
  • 小程序事件之bind 、catch 、capture-bind和capture-catch的区别

    事件分类

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

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

    事件的绑定:

        bind和catch都是用来绑定事件的,与 bind 不同, catch 会阻止事件向上冒泡

    <view id="outer" bindtap="handleTap1">
      outer view
      <view id="middle" catchtap="handleTap2">
        middle view
        <view id="inner" bindtap="handleTap3">
          inner view
        </view>
      </view>
    </view>

    上例中,点击 inner view 会先后调用handleTap3handleTap2(因为tap事件会冒泡到 middle view,而 middle view 阻止了 tap 事件冒泡,不再向父节点传递),点击 middle view 会触发handleTap2,点击 outer view 会触发handleTap1

    事件的捕获阶段

     1. 事件是有两个阶段的:捕获阶段 和  冒泡阶段, 且捕获阶段位于冒泡阶段之前。

     2. 在捕获阶段中,事件到达节点的顺序与冒泡阶段恰好相反

     3. 在捕获阶段监听事件时,可以采用capture-bindcapture-catch关键字,后者将中断捕获阶段和取消冒泡阶段

     示例:

    点击 inner view 会先后调用handleTap2handleTap4handleTap3handleTap1

    <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>

     如果把上面的代码改成如下,将只会触发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>
  • 相关阅读:
    UE4项目《和平精英》渲染技术浅析
    如何用CMake构建Android C++库
    Unity Native Plugin
    多边形三角化
    参考图
    Unity SRP学习笔记
    Macbook Pro HDMI 无信号解决办法
    CGAL计算几何算法库
    无标记动作捕捉
    PS 鼠绘
  • 原文地址:https://www.cnblogs.com/hzhuxin/p/15074300.html
Copyright © 2011-2022 走看看