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方法来停止事件的传递。以上内容仅供参考,读者可以根据自己的需求自行修改和补充。