微信小程序之绑定点击事件的解析

1. 简介

随着移动互联网的快速发展,微信小程序应运而生,越来越多的企业和个人开始关注和使用微信小程序。作为一种全新的开发模式,微信小程序的开发技能又成为了一项新的技能。其中,绑定点击事件是开发小程序时一个常见的操作,下面我们就来看看绑定点击事件的具体解析。

2. 绑定简单点击事件

在小程序中,绑定一个简单的点击事件比较简单,可以在目标元素上通过WXML绑定一个触摸事件。

2.1 WXML绑定方式

下面的例子演示了如何在<view>元素上绑定一个简单的触摸事件并且定义事件处理函数:

<view onTap="myTapFunc"> {{ message }} </view>

Page({

data: {

message: 'Hello MINA!'

},

myTapFunc: function() {

console.log('This is a tap event.');

}

})

代码中使用onTap属性绑定了一个触摸事件myTapFunc,并且使用了双大括号绑定了message的数据。在对应的Page中的myTapFunc函数里打印一条语句。

2.2 使用JS动态绑定

如果想要通过JavaScript来动态绑定一个事件,需要使用<button>或者<view>组件的bindTap或catchTap属性:

<view id="tapTest" data-hi="WeChat" onTap="tapName"> {{ message }} </view>

Page({

data: {

message: 'Hello MINA!'

},

onLoad: function (options) {

// 页面初始化 options为页面跳转所带来的参数

this.setData({

text: "Page data"

})

var _this=this;

document.getElementById('tapTest').addEventListener('tap',function(){

console.log(_this.data.text,'view点击事件');

})

}

})

在这个实例中,使用了View组件中的id属性tapTest,使用setData方法设置了text的值,然后使用addEventListener方法绑定了一个点击事件,同时在事件处理函数中调用了console.log方法输出一条信息。

3. 事件传参

在绑定事件时,有时候需要把一些自定义的数据传递给事件处理函数,比如列表中每个元素都有一个id属性,那么在点击其中一个元素时,就需要把这个id传递给事件处理函数。下面我们来看看如何在微信小程序中传递事件参数。

3.1 事件传参方式

在小程序中,可以通过事件对象event来传递数据。在使用双大括号绑定一个函数时,不必在最后加上一对小括号调用函数,代码如下:

<view onTap="tapName" data-hi="WeChat" data-id="3" data-name="miniprogram"> {{ message }} </view>

//目标函数定义

function tapName(event) {

console.log(event.currentTarget.dataset.id);

console.log(event.currentTarget.dataset.name);

}

在这个例子中,我们在<view>元素上绑定了一个数据叫做data-id的属性值为3,再绑定一个数据叫做data-name的属性值为miniprogram,然后在定义的事件处理函数tapName中,通过event.currentTarget.dataset.id来获取到data-id的值,通过event.currentTarget.dataset.name来获取到data-name的值。

3.2 事件冒泡和事件捕获

在小程序中,事件传递方式主要是基于事件冒泡和事件捕获来实现的。事件冒泡指的是事件先在最深层的节点被触发,然后逐级向上传递。而事件捕获则是从最外层节点开始向下逐级触发,直到触发事件的最深层节点。

我们可以通过WXML中的bindTap和catchTap属性来控制事件的冒泡和捕获方式。其中,tap为最基本的触摸事件,而bindTap向上冒泡,catchTap向下捕获。如果想停止事件的传递,可以使用stopPropagation方法,该方法会阻止事件冒泡或捕获,使得事件只触发当前节点上。

<view bindtap="handleTap1">

单击

<view bindtap="handleTap2">这里有个嵌套的<view></view>节点</view>

</view>

Page({

handleTap1:function(event){

console.log('handleTap1')

},

handleTap2:function(event){

console.log('handleTap2')

event.stopPropagation()

}

})

在这个例子中,使用了两个嵌套的<view>组件,同时绑定了handleTap1和handleTap2两个事件处理函数。当点击嵌套的<view>节点时,先触发handleTap2事件,调用console.log方法输出handleTap2的结果,然后执行event.stopPropagation()方法,停止事件的冒泡传递。这时候,我们再次点击嵌套的<view>节点,只会触发handleTap2事件,没有任何输出。当我们点击最外层的<view>节点时,会先触发handleTap1事件,输出handleTap1,然后再次点击最外层的节点,才会在console中输出handleTap2。

4. 总结

本文介绍了微信小程序中绑定点击事件的相关内容。在小程序中,我们可以通过WXML或者JavaScript方式来绑定触摸事件,并可以通过event对象来传递自定义数据,同时介绍了事件冒泡和事件捕获的相关知识,并通过stopPropagation方法来停止事件的传递。以上内容仅供参考,读者可以根据自己的需求自行修改和补充。