1.(wx.navigateTo)在小程序页面跳转中,页面之间跳转会有携带参数的须要(例如:从列表页跳转到详情,详情须要经过不一样的id来请求不一样的详情页数据):javascript
(1)跳转有两种:html
①标签方式:<navigator url="/pages/shopdetail/shopdetail?id={{item.id}}&name='xiaoming'&age=20" open-type="navigate"></navigator>java
②js事件的方式: 小程序
wx.navigateTo({api
url: "/pages/shopdetail/shopdetail?id="+ifor.id+"&name='xiaoming'&age=20"缓存
});app
(2)路径地址中携带参数,第一个参数用问号(?)隔开,第二个参数以后用(&)隔开,参数的key和value之间用等号(=)隔开,其实和HTML的a连接同样;函数
(3)从a页面跳转到b页面,携带的参数在b页面的onload生命周期时获取url
onLoad: function(options) {
var id = options.id;
var name = options.name;
var age = options.age;
},.net
2.从某些页面回到首页,也有存在从该页面带参数,携带的该参数能改版首页的某些状态,由于从首页过来是经过 navigateTo过来的,因此从该页面再会带首页,不能用 navigateTo(在小程序开始时只有五级页面嵌套,虽然如今好像没有这个限制了,但若是循环往复上百次上千次,那navigateTo结果就不敢想象了,就嵌套了几千次了);这时能够考虑销毁当前页面之前的全部页面,跳到首页
3.若是不用 wx.reLaunch 而 想用 wx.navigateTo 其实也有方法
(1)存储到app对象上的方式,在app.js中定义一个全局变量mydata
var app = getApp() app.globalData.mydata = {name:'xiaoming', age:30}; //存储数据到app对象的全局变量上 wx.navigateBack(); //返回上一个页面
(2)存储到数据缓存的方式
wx.setStorage({ key: "mydata", data: {name:'xiaoming', age:30}, success: function () { wx.navigateBack(); //返回上一个页面 } })
4.wx.navigateBack,其实你从那个页面跳走再用wx.navigateBack返回的方式走到该页面,走的时候是啥状态如今就是啥状态,若是涉及状态改变的部分必须写在onshow生命周期函数中,onload只会初次执行,等wx.navigateBack不会再次执行,但onshow会执行。
5.wx.switchTab是不能携带参数的,能够经过全局变量或者缓存来实现参数携带;
(1)全局变量:
app.globalData.otherInfo.detailId = that.data.detailInfor.id;
(2)本地缓存
wx.setStorageSync('detailId', that.data.detailInfor.id)
6.对于有特殊字符的地址参数,咱们还须要进行转义
(1)代码(encodeURIComponent:编译,decodeURIComponent:还原。成对使用)
// 原始url var url ='http://img-ads.csdn.net/2018/201812101159198567.png'; // 转码后的 var newUrl = encodeURIComponent(url); // 将转码的再次还原 var oldUrl = decodeURIComponent(newUrl); console.log('url', url); console.log('newUrl', newUrl); console.log('oldUrl', oldUrl);
(2)效果
8.小程序跳转小程序携带参数:点击传送门去官网
8.1有两种方式:
(1)经过path 的方式:
(2)经过extraData的方式:
8.2 在使用时有一些区别:
(1)path的方式能够经过query的方式能够拿到;经过extraData的方式需在 “options.referrerInfo.extraData.参数名” 的方式来获取,例以下图;
(2)query的方式:在 envVersion 为 develop 模式时,第一次跳转小程序没法获取 参数,在第二次以及第二次之后才能获取参数值。可是若是 envVersion 为 release 的时候是正常的。出现这种现象的缘由多是腾讯的bug吧,至少截止20200630是这样的,但愿之后能修复吧。