微信小程序——函数传参方式

前言:
用过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中显示。

↓下方求个赞~感谢客官

### 微信小程序页面跳转传递参数的方法 在微信小程序中,可以通过`wx.navigateTo`方法来实现在页面间跳转的同时传递参数。对于简单的数据类型可以直接附加到URL后面作为查询字符串的一部分;而对于复杂的数据结构(如对象),则需先将其序列化为JSON字符串再进行传输。 #### 基本语法 当需要从一个页面导航至另一个新页面时,可调用如下API: ```javascript wx.navigateTo({ url: '目标页面路径?参数名1=值1&参数名2=值2...' }) ``` 其中,“?”之后的部分即是要发送给下一个页面的信息[^3]。 #### 实际案例展示 假设有一个列表页想要链接到详情页,并且希望把选中的项目信息一并带给后者处理,则可以在触发事件处理器内完成此操作: ```javascript // 列表项点击响应函数 function onItemTap(e){ let itemIndex = e.currentTarget.dataset.index; // 获取当前项目的详细资料 let selectedItemInfo = JSON.stringify(this.data.items[itemIndex]); // 执行页面切换动作并向目的地址追加所需携带的数据 wx.navigateTo({ url:`../detail/detailPage?itemData=${selectedItemInfo}` }); } ``` 上述代码片段展示了如何通过`JSON.stringify()`方法将JavaScript对象转换成JSON格式字符串以便于附着在请求链接上[^4]。 而在接收端——也就是被访问的目标页面中,应当重写其默认加载行为以读取这些传入的变量: ```javascript Page({ onLoad:function(option){ try { // 解析接收到的对象形式参数 this.setData({ receivedObject : JSON.parse(decodeURIComponent(option.itemData)) }) } catch(error) {} // 对其他简单类型的参数做相应处理... } }); ``` 这里利用了`decodeURIComponent()`解码可能存在的特殊字符编码问题,确保能正确解析原始数据[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值