微信小程序-事件处理

简介: 微信小程序-事件处理

事件绑定


文档地址:https://developers.weixin.qq.com/miniprogram/dev/framework/view/wxml/event.html#%E4%BA%8B%E4%BB%B6%E8%AF%A6%E8%A7%A3


小程序的事件绑定需要注意以下几点:

  • 小程序的事件绑定是通过标签的属性来完成的(与vue、react一致)
  • 通过属性绑定事件其有两种写法
  • 绑定冒泡事件(不会帮我们阻止冒泡)【主要】
  • 语法:bind事件类型=“方法名” 方法名不能加括号,而且不能传参
  • 绑定非冒泡事件(会帮我们阻止冒泡)
  • 语法:catch事件类型=“方法名” 方法名不能加括号,而且不能传参
  • 上述语法还支持在属性名中间加上“:”写法,例如:
  • bind:事件类型
  • catch:事件类型
  • 自基础版本库2.8.1以后所有的事件都支持加“:”写法
  • 特别需要注意,事件类型有可能其名称与之前大不同,例如以前的点击事件类型名字是click,在这里点击事件其实就是手指触摸事件,官网规定触摸事件是tap

例如,声明一个view给其绑定一个点击事件(冒泡事件):

<!--pages/eventBind/eventBind.wxml-->
<text>pages/eventBind/eventBind.wxml</text>
<!-- 给view标签绑定点击事件 -->
<view bindtap="tapHandler">
    点我一下有惊喜
</view>
<!-- 给view绑定长按事件 -->
<view bind:touchstart="start" bind:touchend="end">
    蓄力发动技能
</view>


随后需要在页面的js逻辑层文件中写对应的处理程序:tapHandler,参考代码如下

Page({
    /**
     * 页面的初始数据
     */
    data: {
        time: 0
    },
    /**
     * tap事件的处理程序
     */
    tapHandler() {
        console.log('青山,如故:放假啦。');
    },
    /**
     * 蓄力开始触发的事件
     */
    start() {
        // 获取当前的时间并记录
        let now = Date.now();
        this.setData({
            time: now
        })
        console.log('吟唱中.....');
    },
    /** 蓄力结束触发的事件 */
    end() {
        let diffTime = Date.now() - this.data.time;
        console.log('qwer毕,cd....');
        console.log('本次计时' + diffTime + '毫秒');
    },
    // ......
});


事件对象


当组件触发事件时,逻辑层绑定该事件的处理方法会收到一个事件对象。通过此对象来进行小程序的自定义事件参数据传递。

事件对象在小程序中是非常有意义的,这点与vue和react不同。在小程序中,事件对象是给事件处理程序传递参数的唯一方式

BaseEvent基础事件对象属性列表:

属性 类型 说明
type String 事件类型
target Object 触发事件的组件的一些属性值集合
currentTarget Object 当前组件的一些属性值集合


注意点:target属性与currentTarget,在部分场景下是一样的,当然也存在不一样的情况。假定事件绑定在父上:

  • 如果父不存在子组件(标签)并或子没标签之间内容的时候,两者一样
  • 如果父存在子组件(标签)并且子有属性的时候,则两者不一样
  • 在小程序中,如果希望在视图结构中通过事件给事件对象传递参数,则可以在标签上使用data-数据名=“数据值”的形式传递,例如参考代码:
<!-- 传递参数efg -->
<view bindtap="tapHandler" id="efg" data-efg="efg">
  <!-- 传递参数abc -->
    <view id="abc" data-abc="abc">点我触发事件</view>
</view>


// 接收参数
/**
  * 事件对象获取
  * 所有的事件处理程序都有一个默认的参数,这个参数就是事件对象
  */
tapHandler(eventObj) {
    console.log(eventObj);
    // 接收事件组件/标签自己的数据
    console.log(eventObj.currentTarget.dataset.efg);
    // 获取事件组件/标签子的数据
    console.log(eventObj.target.dataset.abc);
}


目录
相关文章
|
7月前
|
小程序 UED 开发者
小程序如何监听页面的滚动事件
小程序如何监听页面的滚动事件
251 0
|
5月前
|
小程序 API 数据库
【微信小程序-原生开发】实用教程09 - 可滚动选项,动态列表-步骤条(含事件传参),动态详情(含微信云查询单条数据 doc)
【微信小程序-原生开发】实用教程09 - 可滚动选项,动态列表-步骤条(含事件传参),动态详情(含微信云查询单条数据 doc)
86 0
|
3月前
|
小程序 JavaScript
微信小程序学习之数据绑定,事件绑定,事件传参与数据同步的学习记录
本文介绍了微信小程序中的数据绑定、事件绑定、事件传参与数据同步的基本概念和使用方法,包括如何在data对象中定义数据、使用mustache语法在wxml中渲染数据、绑定和处理事件、事件对象属性、事件传参以及实现输入框与data数据的同步。
微信小程序学习之数据绑定,事件绑定,事件传参与数据同步的学习记录
|
3月前
|
JSON 小程序 JavaScript
微信小程序页面事件,下拉刷新事件和上拉触底事件
这篇文章介绍了微信小程序中如何实现下拉刷新和上拉触底事件,包括开启下拉刷新、配置下拉刷新样式、监听下拉刷新事件,以及监听上拉触底事件和配置上拉触底的距离。
|
5月前
|
开发框架 前端开发 JavaScript
在微信框架模块中,基于Vue&Element前端的事件和内容的管理
在微信框架模块中,基于Vue&Element前端的事件和内容的管理
|
5月前
|
JavaScript
支付系统---微信支付23-数据绑定和事件,使用Vue调试要添加扩展,F12与console平级就出现了Vue,在支付资料,微信支付,04资料,工具里
支付系统---微信支付23-数据绑定和事件,使用Vue调试要添加扩展,F12与console平级就出现了Vue,在支付资料,微信支付,04资料,工具里
|
7月前
|
小程序
【微信小程序】-- 页面事件 - 上拉触底 - 案例(二十七)
【微信小程序】-- 页面事件 - 上拉触底 - 案例(二十七)
|
7月前
|
JSON 小程序 JavaScript
【微信小程序】-- 页面事件 - 上拉触底(二十六)
【微信小程序】-- 页面事件 - 上拉触底(二十六)
|
7月前
|
JSON 小程序 JavaScript
【微信小程序】-- 页面事件 - 下拉刷新(二十五)
【微信小程序】-- 页面事件 - 下拉刷新(二十五)
|
1月前
|
小程序 前端开发 JavaScript
在线课堂+工具组件小程序uniapp移动端源码
在线课堂+工具组件小程序uniapp移动端源码
32 0
在线课堂+工具组件小程序uniapp移动端源码