WXML模板语法-事件绑定

简介: 这篇文章主要介绍了微信小程序中的事件处理机制。事件是渲染层与逻辑层通信的方式,允许开发者响应用户行为。常见的事件有`bindtap`,用于处理点击事件。事件处理函数中,可以通过`event`对象获取相关属性,如`target`(触发事件的源头组件)和`currentTarget`(事件绑定的组件)。事件参数传递可通过`data-*`属性实现,然后在事件处理函数中通过`event.target.dataset`访问。此外,`bindinput`用于监听输入框变化,配合`detail.value`可以获取最新的输入值,并实现数据同步。

一、

1.事件


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


2.小程序中常用的事件



3.事件对象的属性列表


当事件回调触发的时候,会收到一个事件对象event,其属性为:



二、


1.target和currentTarget


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


例如:




点击内部的按钮时,点击事件以冒泡的方式向外扩散,也会触发外层view的tap事件处理函数


此时,对于外层的view来说:


e.target指向的是触发事件的源头组件,因此,e.target是内部的按钮组件


e.currentTarget指向的是当前正在触发事件的那个组件,因此,e.currentTarget是当前的view组件


2.bindtap


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


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


<button type="primary" bindtap="btnTapHandler">按钮</button>


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


Page({
  data: {
    btnTapHandler(e) { //按钮的tap事件处理函数
      console.log(e) //事件的参数对象e
    }
  })


三、


1.在事件处理函数中为data中的数据赋值


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


<!--pages/list/list.wxml-->
<button type="primary" bindtap="CountChange">+1</button>


// pages/list/list.js
Page({
  data: {
    count:0
  },
 
  //修改count的值
  CountChange(){
    this.setData({
      count:this.data.count + 1
    })
  }
 
})




每按一次+1,控制台的count都会加一


2.事件传参


小程序中的事件传参比较特殊,不能在绑定事件的同时为事件处理函数传递参数


<button type="primary" bindtap="btnHandler(123)">事件传参</button>


以上代码不能正常运行


因为小程序会把bindtap的属性值统一当作事件名称来处理,相当于要调用一个名称为btnHandler(123)的事件处理函数


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


<!--pages/list/list.wxml-->
<button type="primary" data-info="{{2}}">事件传参</button>


nfo会被解析为参数的名字,数值2被解析为参数的值


在事件处理函数中,通过event.target.dataset.函数名即可获取到具体参数的值


<!--pages/list/list.wxml-->
<button type="primary" bindTap="btnTap" data-info="{{2}}">+2</button>


// pages/list/list.js
Page({
  data: {
    count:0
  },
 
  btnTap(e) {
    this.setData({
      count:this.data.count + e.target.dataset.info
    })
  }
 
 
})


如果明确知道自己传的是一个数字的话,建议大家放在Mustache语法里面


3.bindinput的语法格式


在小程序中,通过input事件来响应文本框的输入事件


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


<!--pages/list/list.wxml-->
<input bindinput="inputHandler"></input>


// pages/list/list.js
Page({
  data: {
    count:0
  },
 
  inputHandler(e){
    //e.detail.value是变化过后,文本框最新的值
    console.log(e.detail.value)
  }
 
 
})




4.实现文本框和data之间的数据同步


实现步骤:


(1)定义数据



(2)渲染结构



(3)美化样式



(4)绑定input事件处理函数



目录
相关文章
|
6天前
|
存储 前端开发 JavaScript
前端基础(二)_JavaScript变量、JavaScript标识符、JavaScript获取元素、JavaScript的鼠标事件
本文介绍了JavaScript变量的声明和使用、标识符的命名规则、如何获取和操作HTML元素,以及JavaScript的鼠标事件处理,通过示例代码展示了这些基础知识点在实际开发中的应用。
19 2
前端基础(二)_JavaScript变量、JavaScript标识符、JavaScript获取元素、JavaScript的鼠标事件
|
1月前
|
XML 前端开发 JavaScript
JSX 语法详解
【9月更文挑战第2天】本文详细介绍了React框架中核心组件JSX的基本概念与高级用法,包括基本语法、条件与列表渲染等。并通过具体示例讲解了如何避免常见的错误,如忘记闭合标签、未使用`key`属性及属性名大小写问题,帮助读者更好地理解和运用JSX,提升React应用程序的开发质量。
42 4
|
2月前
|
JavaScript 前端开发
JavaScript 书写位置
JavaScript 书写位置
23 1
|
3月前
|
JavaScript 前端开发
10种JavaScript代码优雅写法
10种JavaScript代码优雅写法
30 1
|
4月前
|
JavaScript 前端开发
JavaScript 注释
JavaScript 注释
31 11
|
4月前
|
JavaScript 前端开发
汇总10种JavaScript代码的高端写法
刚开始学习JS代码时,我们只需要掌握JS中对应知识点就好,随着对JS代码的熟悉程度,我们就要思考如何写出更优雅,更简洁的代码。
90 3
|
4月前
|
前端开发 JavaScript
JSX 中带有大括号的 JavaScript
JSX 中带有大括号的 JavaScript
|
4月前
|
前端开发 JavaScript 算法
JavaScript事件监听测试代码
JavaScript事件监听测试代码
26 0
|
12月前
|
JavaScript 前端开发
12Vue - 模板语法(插值-使用JavaScript表达式)
12Vue - 模板语法(插值-使用JavaScript表达式)
209 0
|
5月前
|
缓存 JavaScript 前端开发
JavaScript的书写位置。
JavaScript的书写位置。