微信小程序----事件绑定

前言

小程序中绑定事件, 通过bind关键字来实现。如: bindtap bindinput bindchanges等不同的组件支持不同的事件,具体查看组件的说明即可。
今天我们来了解bindtap和 bindinput这两个事件,以及它们所引出的事件通用的 三项技能。

1. 输入事件 (bindinput)

wxml页面

<input type="text" bindinput="handleInput" />
<view>
   {{num}}
</view>

js页面

Page({ 
    data: {
       num:0
    },
     // 绑定的事件 
   handleInput: function(e) {   
	 console.log(e);    
	 console.log("值被改变了");
   }

})

在绑定相应的事件信息时,我们必须明确值的信息来源,例如我们上面所写的输入框的内容最后存储的地方在哪呢?记住,小程序所有与事件相关的内容都存在了绑定函数时e的这个事件源当中,我们可以对其具体的值进行相应的查看

(1) 第一个技能包—通过绑定的事件源查找相应的数据,如我们上面所说的input输入框绑定的事件就存在了 e.detail.value下
在这里插入图片描述
(2)第二个技能包—如何对获取的数据进行相应的赋值(假设我们在js文件中的Page标签下有一个数据num,我们需要通过实时获取输入框的值对其进行改变)
上面我们已经知道输入的内容为e.detail.value
按照过去学的语言可能会有如下错误写法:
[1] this.data.num = e.detail.value
[2] this.num = e.detail.value
小程序中对数据的赋值有如下的规定的写法:

this.setData({
  num:e.detail.value
})

这样在js文件中(这样我们就能获取到输入框的值,并对num赋值了)

Page({

	/**
	* 页面的初始数据
	*/
	data: {
	  num:0
	},
	//1.输入框的input事件的执行逻辑
	handleInput(e){
		//console.log(e);
		//console.log(e.detail.value);
		this.setData({
		  num: e.detail.value
	   }) 
	}
})

2.点击事件(bintap)

这里我们要学习第三个技能包—小程序中无法在实践中直接传参,需要通过自定义属性的方法来传递参数。

代码解析:
绑定事件时不能带参数,如下就是错误示例

<button bindtap="handletap(1)">+</button>

事件传值通过标签自定属性的方式和value, 如data-operation="{{1}}",
如下是正确示例

<button bindtap="handletap" data-operation="{{1}}">+</button>

通过上面的技能包一,通过事件源找到点击事件传递的参数丢在哪?

	//2.加减法按钮事件
	handletap(e){
	  console.log(e);
	}

在这里插入图片描述

小结

我们了解了事件的基本用法之后,更重要的是了解三项技能包。
[1] 通过事件源e 获取相应信息,
[2] 通过this.setData来为数据赋值,
[3] 通过自定义属性的方法来传递参数

发布了70 篇原创文章 · 获赞 2 · 访问量 5499

猜你喜欢

转载自blog.csdn.net/TheWindOfSon/article/details/104921767