微信小程序开发---事件的绑定

目录

一、事件的概念

二、小程序中常用的事件

三、事件对象的属性列表

四、bindtap的语法格式

(1)绑定tap触摸事件

(2)编写处理函数

五、在事件处理函数中为data中的数据赋值

六、事件传参

七、bindinput的语法格式

八、实现文本框和data之间的数据同步


一、事件的概念

事件是渲染层到逻辑层的通讯方式。通过事件可以将用户在渲染层产生的行为,反馈到逻辑层进行业务的处理。

二、小程序中常用的事件

类型   绑定方式                      描述
tap    bindtap或bind:tap           手指触摸后马上离开,类似于HTML中的click事件 
input  bindinput或bind:input       文本框的输入事件 
change bindchange或bind:change     状态改变时触发 

三、事件对象的属性列表

当事件回调触发的时候,会收到一个事件对象event,他的详细属性如下表所示

属性            类型      说明
type           string    事件类型
timeStamp      Integer   页面打开到触发事件所经过的毫秒数
target         Object    触发事件的组件的一些属性值集合
currentTarget  Object    当前组件的一些属性集合
detail         Object    额外的信息
touches        Array     触摸事件,当前停留在屏幕中的触摸点信息的数组
changedTouches Array     触摸事件,当前变化的触摸点信息的数组

注意:

target和currentTarget的区别

target是触发该事件的源头组件,而currentTarget是当前事件所绑定的组件。

举例如下:

点击了按钮后,点击事件会以冒泡的方式向外扩散,也会触发外层的view的tap事件处理函数,对于view来说:

e.target就是指触发事件的源头组件

e.currentTarget就是当前正在触发事件的那个组件,也就是view

四、bindtap的语法格式

在小程序中,不存在HTML中的onclick鼠标点击事件,而是通过tap事件来响应用户的触摸行为。一般分为两步:

(1)通过bindtap,可以为组件绑定tap触摸事件

(2)在页面的js文件中定义对应的事件处理函数,事件参数通过形参event(一般简写成e)来接受

(1)绑定tap触摸事件

<view><button type="primary" bind:tap="hanshu">按钮</button>
</view>

(2)编写处理函数

//js文件中
hanshu(e){console.log('666')}

五、在事件处理函数中为data中的数据赋值

通过调用this.setData(dataObject)方法,可以给页面中data中的数据重新赋值

案例:制作一个按钮,点击他之后,count+1,并将count值显示在页面

//js文件hanshu(e){this.setData({count:this.data.count+1})}<view><view>count={{count}}</view><button type="primary" bind:tap="hanshu">点击我count+1</button>
</view>

六、事件传参

小程序中的传参不能在绑定事件的同时为事件处理函数传递参数,如下将是不正确的。

<button bind:tap="hanshu(123)">按钮</button>

因为小程序会将bintap的属性值全部当成事件名称来处理,相当于要调用一个名称是hanshu(123)的事件处理函数。

但是我们可以为组件提供data-*自定义属性传参,其中*代表的是参数的名字,如下:

<view><view>count={{count}}</view><button type="primary" bind:tap="hanshu" data-i="{{10}}">点击我count</button>
</view>

data后面的i可以自己取名称,i会被解析成参数的名字,10是参数的值,在事件处理函数中,通过event.target.dataset.参数名称也就是event.target.dataset.i可以获取参数的值。

 hanshu(e){this.setData({count:this.data.count+e.target.dataset.i})}

七、bindinput的语法格式

在小程序中,通过input事件来响应文本框的输入事件,语法格式如下

(1)通过bindinput可以为文本框绑定输入事件


<view><input bindinput="handl" />
</view>

(2)在js文件处理事件函数

handl(e){console.log(e.detail.value)},

八、实现文本框和data之间的数据同步

handl(e){this.setData({msg:e.detail.value})},<input bindinput="handl" value="{{msg}}" /><view>msg={{msg}}</view>

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/101796.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[Vue3 博物馆管理系统] 使用Vue3、Element-plus的Layout 布局构建组图文章

系列文章目录 第一章 定制上中下&#xff08;顶部菜单、底部区域、中间主区域显示&#xff09;三层结构首页 第二章 使用Vue3、Element-plus菜单组件构建菜单 第三章 使用Vue3、Element-plus走马灯组件构建轮播图 第四章 使用Vue3、Element-plus tabs组件构建选项卡功能 第五章…

邮件钓鱼的防守策略

一、攻击背景 在历年的实战攻防演练中&#xff0c;人的漏洞是网络安全最大的脆弱点&#xff0c;而钓鱼攻击就是从内部攻破堡垒至关重要的手段。攻击者通过伪装成可信来源发送虚假邮件&#xff0c;诱导接收者点击恶意链接、提供敏感信息或执行恶意附件&#xff0c;从而获取机密…

[LeetCode]栈,队列相关题目(C语言实现)

文章目录 LeetCode20. 有效的括号LeetCode225. 用队列实现栈LeetCode232. 用栈实现队列LeetCode622. 设计循环队列 LeetCode20. 有效的括号 题目 给定一个只包括 (&#xff0c;)&#xff0c;{&#xff0c;}&#xff0c;[&#xff0c;] 的字符串 s &#xff0c;判断字符串是否有…

合宙Air724UG LuatOS-Air LVGL API控件-键盘 (Keyboard)

键盘 (Keyboard) LVGL 可以添加触摸键盘&#xff0c;但是很明显&#xff0c;使用触摸键盘的话必须要使用触摸的输入方式&#xff0c;否则无法驱动键盘。 示例代码 function keyCb(obj, e)-- 默认处理事件lvgl.keyboard_def_event_cb(keyBoard, e)if(e lvgl.EVENT_CANCEL)the…

一百七十二、Flume——Flume采集Kafka数据写入HDFS中(亲测有效、附截图)

一、目的 作为日志采集工具Flume&#xff0c;它在项目中最常见的就是采集Kafka中的数据然后写入HDFS或者HBase中&#xff0c;这里就是用flume采集Kafka的数据导入HDFS中 二、各工具版本 &#xff08;一&#xff09;Kafka kafka_2.13-3.0.0.tgz &#xff08;二&#xff09;…

QT—基于http协议的网络文件下载

1.常用到的类 QNetworkAccessManager类用于协调网络操作&#xff0c;负责发送网络请求&#xff0c;创建网络响应 QNetworkReply类表示网络请求的响应。在QNetworkAccessManager发送一个网络请求后创建一个网络响应。它提供了以下信号&#xff1a; finished()&#xff1a;完成…

Net跨平台UI框架Avalonia入门-安装和使用(v11版本)

介绍Avalonia v11版本 avalonia v11版本发布了&#xff0c;增加了很多新的功能&#xff0c;Avalonia的扩展也同步升级了。 主要更新内容&#xff1a; 辅助功能&#xff1a;增加了对各种辅助工具的支持&#xff0c;提高了Avalonia应用程序的可用性。输入法编辑器&#xff08;I…

video标签自动播放音视频并绘制波形图

html中的<video>标签可以用来播放常见的音视频格式&#xff0c;支持的格式包括:MP3、Ogg、WAV、AAC、MP4、WebM、AVI等&#xff0c;当然支持的格式也和浏览器和操作系统有关。这里以一个可以自动播放音视频并绘制波形图的页面为例说明一下<video>标签的用法。 vid…

LAMP搭建WordPress

L linux A apache hhtpd M mysql/maridb P PHP1、 安装php yum -y install php php-fpm php-server php-mysql1.1、 启动php-fpm并自启 systemctl enable php-fpm --now[rootecs-1cee ~]# systemctl status php-fpm ● php-fpm.service - The PHP FastCGI Process ManagerLoa…

达梦控制台还原报错“管道失败”

达梦数据库控制台还原报错“管道失败” 环境 主机操作系统&#xff1a;windows10 profession 达梦数据库版本&#xff1a;达梦7 问题背景 全新安装达梦7数据库后&#xff0c;创建数据库实例&#xff0c;需要恢复往期bat备份。在控制台配置指定搜索目录后&#xff0c;获取备份时…

警告:Provides transitive vulnerable dependency maven:org.yaml:snakeyaml:1.30

1. 警告 SpringBoot 的 validation 依赖包含有易受攻击的依赖 snakeyaml。 警告信息如下&#xff1a; Provides transitive vulnerable dependency maven:org.yaml:snakeyaml:1.30 意思是&#xff1a;提供了可传递的易受攻击依赖 maven:org.yaml:snakeyaml:1.30 2. 警告示例 …

【MySQL】MySQL的安装,登录,配置和相关命令

文章目录 前言一. 卸载不需要的环境二. 获取MySQL的yum源三. 安装MySQL和启动四. 尝试登录MySQL方法1&#xff1a;获取临时root密码方法2&#xff1a;没有密码方法3&#xff1a;配置文件 五. 简单配置结束语 前言 本篇文章是基于云服务器&#xff1b;Linux&#xff1a;Centos7…