1. 什么是事件
    1. 事件是视图层到逻辑层的通讯方式。
    2. 事件可以将用户的行为反馈到逻辑层进行处理。
    3. 事件可以绑定在组件上,当达到触发事件,就会执行逻辑层中对应的事件处理函数。
    4. 事件对象可以携带额外信息,如id, dataset, touches。
  2. 使用方式
    1. 在组件中绑定一个事件处理函数。
      1. 如bindtap,当用户点击该组件的时候会在该页面对应的Page中找到相应的事件处理函数。
      2. <view id="tapTest" data-hi="MINA" bindtap="tapName"> Click me! </view>
    2. 在相应的Page定义中写上相应的事件处理函数,参数是event
      1. Page({ tapName: function(event) { console.log(event) } })
  3. 事件分类
    1. 冒泡事件
      1. 概念
        1. 当一个组件上的事件被触发后,该事件会向父节点传递
      2. 例子
    2. 非冒泡事件
      1. 概念
        1. 当一个组件上的事件被触发后,该事件不会向父节点传递
      2. 例子
        1. 除上表之外的其他组件自定义事件都是非冒泡事件,如<form/>的submit事件,<input/>的input事件,<scroll-view/>的scroll事件等
  4. 事件绑定
    1. 形式
      1. 事件绑定的写法同组件的属性,以key、value的形式。
      2. key以bind或catch开头,然后跟上事件的类型,如bindtap, catchtouchstart。
      3. value是一个字符串,需要在对应的Page中定义同名的函数。不然当触发事件的时候会报错。
      4. bind事件绑定不会阻止冒泡事件向上冒泡,catch事件绑定可以阻止冒泡事件向上冒泡。
  5. 事件对象
    1. BaseEvent
      1. 基础事件对象属性列表
      2. type String 事件类型
      3. timeStamp Integer 事件生成时的时间戳
      4. target Object 触发事件的组件的一些属性值集合
      5. currentTarget Object 当前组件的一些属性值集合
    2. TouchEvent
      1. touches Array 触摸事件,当前停留在屏幕中的触摸点信息的数组
      2. changedTouches Array 触摸事件,当前变化的触摸点信息的数组
      3. 触摸事件对象属性列表(继承 BaseEvent)
    3. CustomEvent
      1. detail Object 额外的信息
      2. 自定义事件对象属性列表(继承 BaseEvent)