微信小程序的页面跳转和参数传递 —— 微信小程序教程系列(6)

关于页面的跳转,微信小程序提供了3种方法:

方法一:

使用API wx.navigateTo()函数

19956127-bd2f1af9067d303a.png

示例:

首先先新建一个test页面

如何新建页面?

请到先阅读下面教程

微信小程序的新建页面 —— 微信小程序教程系列(4)

index.wxml:

在index.wxml新建一个button组件,并使用bindtap事件绑定一个函数


19956127-8427f72b749e9fc4.png

index.js:

在index.js中的Page函数内部,添加changeToTest 函数,函数里面使用wx.navigateTo,写上需要跳转的页面,里面传入的是一个对象,对象内使用url属性,对应的就是需要跳转的页面的路径(注意:这是接收的是一个相对路径,并且页面不需要使用.wxml后缀)


19956127-7ef13773e3454822.png

运行:


19956127-3aa1387a3b0ddd62.gif

方法二:
使用API wx.redirectTo()函数


19956127-c723ec82b1aef045.png

示例:

首先先新建一个test页面

如何新建页面?

请到先阅读下面教程

微信小程序的新建页面 —— 微信小程序教程系列(4)

index.wxml:

在index.wxml新建一个button组件,并使用bindtap事件绑定一个函数


19956127-dc0ead7f10174d0b.png

index.js:


19956127-4e06f113bdecfdf4.png

运行:


19956127-797635bfc776ff24.gif

备注:

1.wx.navigateTo()和wx.redirectTo()的区别:

wx.navigateTo()是保留当前页面,跳转到某个页面,跳转页面后可以返回上一页。

wx.redirectTo()是关闭当前页面,跳转到某个页面,跳转页面后不能返回上一页。

方法三:
使用组件 <navigator>

示例:

首先先新建一个test页面

如何新建页面?

请到先阅读下面教程

微信小程序的新建页面 —— 微信小程序教程系列(4)

index.wxml:
在index.wxml页面添加一个<navigator>元素,在元素里面使用属性url就可以


19956127-df682853b04a00c6.png

运行:


19956127-4290b9e2f31a71a0.gif

跳转的数据传递

以wx.navigateTo为例:

上面讲述,wx.navigateTo传入的url是跳转的页面(使用相对路径)

wx.navigateTo({
    url:"pages/home/home"
});

那么参数传递至下一页面,则只需要在路径后面,添加?问号,?后面接的是参数,以key-value的方式。

这里传了个value为2的参数

wx.navigateTo({
    url:"pages/home/home?type=2"
});

然后在home.js中的onLoad()函数中得到值:option.type就可以得到了,如下:

onLoad: function (option) {
    this.setData({
        type:option.type,
    });
    console.log(option.type);
}

原文作者:michael_ouyang
原文链接:https://blog.youkuaiyun.com/michael_ouyang/article/details/54945973

### 微信小程序页面跳转传递参数的方法 在微信小程序中,可以通过`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、付费专栏及课程。

余额充值