前言:
用过vue框架的童鞋都知道,如果我们想要在vue中的v-click中向函数传递参数,我们一般的写法是这样儿的~
<div v-click=test(此物为参数)></div>
在写小程序时,依照同样的思路写:
<view bindtap="test(1)">
点击我
</view>
小程序会告诉你,臣妾做不到啊~,就问你慌不慌,懵不懵,控制台会给你输入一个提示:
解决方案:
小程序中要向函数传递参数,需要使用类似于H5自定义属性的方式,data-xxx=“1” ,如下:
<view bindtap="test" data-num="1">
点击我
</view>
(这就完了吗?都没有给test函数传啊,不需要吗?)是的,不需要,直接写一个函数名称即可,莫要画蛇添足~切记
小程序的函数有一个形参event,这个形参是默认存在的,不需要调用函数时传递,这个里面基本都包含了你所想要的东西,如果没有你想要的…哪就没有了,看下图:
Page({
data: {},
test:function(event){
console.log(event)
}
})
圈出来的这两个属性,基本都包含了小程序要给你的东西:
changedTouches里面包含了触点的位置
currentTarget里面包含了4个属性:
- dataset——自定义设置的data属性
- id——给组件设置的id名称
- offsetLeft——距离父级元素左边的距离
- offsetTop——距离父级元素上边的距离
所以我们要想在函数中得到咱们自定义的data-*,就需要在currentTarget.dataset中进行获取即可,现在dataset中有一个num,就是朕刚才定义的data-num,是否会有疑问,属性不都是全部名称吗?写的是data-num,在dataset里怎么只有num,不要有疑问,小程序饿了,把data-吃了
重点注意:
- 在组件自定义属性的时候,一定一定一定不能把data-丢了,不能直接写num=“1”,这种的小程序得不到,是不会在dataset中显示的。
演示忘了写data-的后果:
<view bindtap="test" num="1">
点击我
</view>
总结:
万物皆可定,自己想定义多少个参数就定义多少个参数,都会在dataset中显示。
↓下方求个赞~感谢客官