1、什么是事件

  (1) 事件是视图层到逻辑层的通讯方式。

  (2) 事件可以将用户的行为反馈到逻辑层进行处理。

  (3) 事件可以绑定在组件上,当达到触发事件,就会执行逻辑层中对应的事件处理函数。

  (4) 事件对象可以携带额外信息,如 id,dataset,touches

2、如何使用事件

  (1) 简单来说就是将事件绑定到组件上面,bindtap和catchtap都属于点击事件,绑定了之后点击组件可以触发这个函数。

  (2) 函数tapName会接受一个参数event,event里面存储了一些函数调用的上下文信息

  (3) 标签元素

<view id="tapTest" data-hi="WeChat" bindtap="tapName"> Click me! </view>

  (4) 绑定事件

Page({
tapName: function(event) {
console.log(event)
}
})

3、bindtap和catchtap的区别

  (1) 相同点:首先他们都是作为点击事件函数,就是点击时触发。在这个作用上他们是一样的,可以不做区分。

  (2) 不同点:他们的不同点主要是bindtap是冒泡的,catchtap是非冒泡的。

4、小程序中事件分为冒泡事件和非冒泡事件。

  (1) 本文以冒泡事件tap(手指触摸后马上离开,也就是点击事件)为例子来区别bind和catch事件

  (2) bindtap? 事件绑定不会阻止冒泡事件向上冒泡

  (3) catchtap? 事件绑定可以阻止冒泡事件向上冒泡

5、例子

1、假如有三个view点击事件都是用的bindtap,三个view是层级包含关系?

<view id="outer" bindtap="out">
outer view
<view id="middle" bindtap="middle">
middle view
<view id="inner" bindtap="inner">
inner view
</view>
</view>
</view>

2、我么在js里代码是在相对应的事件打印出log,代码如下?

out:function(e){
console.log("--out bindtap click")
}, middle: function (e) {
console.log("--middle bindtap click")
}, inner: function (e) {
console.log("--inner bindtap click")
}

3、bindtap执行结果

  点击out view打印出一条log --> out bindtap click

  点击middle view打印出两条log --> middle bindtap click--out bindtap click

  点击innew view打印出三条log --> inner bindtap click--middle bindtap click--out bindtap click

  可以看出bindtap不阻止向上冒泡,所以点击inner一直冒泡到了最外层。

4、如果我们只修改middle view的bindtap为catchtap

  点击out view打印出一条log --> out bindtap click(因为没有上层元素故而无法向上冒泡)

  点击middle view打印出一条log --> middle bindtap click(catchtap阻止向上冒泡)

  点击innew view打印出两条log --> inner bindtap click--middle bindtap click(catchtap阻止向上冒泡)

微信小程序bindtap与catchtap的区别的更多相关文章

  1. 微信小程序bindtap和catchtap区别

    bindtap可以产生冒泡事件 catchtap只自身触发事件,不会传递到父视图         文章来源:刘俊涛的博客 地址:http://www.cnblogs.com/lovebing 欢迎关注 ...

  2. 只会Vue怎么开发小程序?vue和微信小程序的到底有哪些区别?

    写了vue项目和小程序,发现二者有许多相同之处,在此想总结一下二者的共同点和区别. 一.生命周期 先贴两张生命周期图对比下: vue生命周期 小程序生命周期 相比之下,小程序的钩子函数要简单得多. v ...

  3. 微信小程序开发和h5的区别

    1. 开发小程序时,每个页面一定要在app.json文件中注册,页面文件夹和其包含的四个文件的名字要保持一致. 2. 小程序发起的都是HTTPS网络请求,在开发调试的过程中可以不校验协议和TLS版本, ...

  4. 微信小程序navigateTo /redirectTo/navigateBack 三者区别

    navigateTo 不会将旧页面出栈: redirectTo 会将旧页面出栈,再将需要跳转到的页面入栈: navigateBack 则是将页面栈最后一个元素出栈,因此倒数第二个元素会成为最后一个元素 ...

  5. 学了这么久,vue和微信小程序到底有什么样的区别?

    前言 写了vue项目和小程序,发现二者有许多相同之处,在此想总结一下二者的共同点和区别.相比之下,小程序的钩子函数要简单得多. 一.生命周期 先贴两张图: vue生命周期 小程序生命周期   相比之下 ...

  6. 微信小程序 - bindtap等事件传参

    什么是事件事件是视图层到逻辑层的通讯方式. 事件可以将用户的行为反馈到逻辑层进行处理. 事件可以绑定在组件上,当达到触发事件,就会执行逻辑层中对应的事件处理函数. 事件对象可以携带额外信息,如 id, ...

  7. 微信小程序onLoad与onShow的区别

    现在招聘网站上,会小程序开发都可以找到月薪不错的职位了,可见小程序认可度还是可以的! 小程序声明周期onLoad与onShow的区别? onLoad页面加载时调用,可以获取参数,通过options. ...

  8. 小程序bindtap和cachetap的区别

    <view bindtap='a'> 1 <view bindtap='b'> 2 <view bindtap='c'> 3 </view> </ ...

  9. 微信小程序-bindtap事件与冒泡

    bindtap就是点击事件 在.wxml文件绑定: <text id='textId' data-userXxx='100' bindtap='tapMessage'>cilck here ...

随机推荐

  1. 9th week -the history of program 1950~2020

    We already know that programming language is a formal language designed to communicate instructions ...

  2. URL工具类

    UrlUtils = { /** * 判断url是否存在(存在跨域问题) * @param {String} url */ isTrueUrl: function(_url) { result = f ...

  3. 转 【<meta name="description" content=">】作用讲解

    今天在看别人写的网站代码,发现类似<meta name="Keywords" content="" >.<meta name="De ...

  4. 转:ITopologicalOperator Buffer调用异常的解决方法(来源网络)

      /// <summary>   /// 用拓扑分析求出缓冲区范围.   /// 由于ArcGIS的问题,有时调用会出异常,因此需要循环调用   /// </summary> ...

  5. Centos7安装JDK1.8 Linux64bit

    流程一览: 1.下载JDK1.8(jdk-8u11-linux-x64.tar.gz) 2. 解压缩安装 3.配置JAVA_HOME环境变量 4.切换JDK1.8为当前使用的JDK 5.重启,查看安装 ...

  6. 如何杀掉一个用户下的所有进程并drop掉这个用户

    如何杀掉一个用户下的所有进程并drop掉这个用户 Copy the sample code below into a file named kill_drop_user.sql.Open SQL*Pl ...

  7. tp5.0:替换修改js、css等样式文件路径

    首先, 我们要知道,TP5已经不支持绝对路径访问样式文件啦!所以我们不必去花时间去找使用$_SERVER来获取 手册位置:模板->内置标签->资源文件加载 方法一: 过程: 1.首先在模块 ...

  8. 转贴:天然VC的迷局

    天然VC的迷局作者:棱子 http://www.jkzgr.net/jiankangguanli/176.html 维生素C对人类来说是一种必不可少的维生素.我们可以通过正常饮食获取所需的VC.市场上 ...

  9. 第二次作业(Git and Github)

       第二次作业(Git and Github) 1.Github项目地址: https://github.com/YanSiJu/JavaWebProject.git 具体介绍详见READ.md 2 ...

  10. Jmeter入门13 jmeter发送application/octet-stream二进制流数据

    http接口请求header里面 content-type: application/octet-stream  (二进制流数据),如何用jmeter发送请求? 1 添加http请求头 2 http请 ...