一、跨页面传值
1、用navigator标签或wx.navigateTo(wx.redirectTo或wx.reLaunch或wx.switchTab或wx.navigateBack)例如:
(1)单个数据或几个数据传值
wx.navigateTo({
url: "../detail/detail?objectId=122342341"+"&?index=12",
})
<navigator class="detailItem" url="../detail/detail?objectId=122342341"+"&?index=12"></navigator>
这里将objectId=12234234和index=12参数传入detail页面, 然后detail页面的 onload 方法内接受。
onLoad:function(options){
var objectId=options.objectId;
var index =options.index;
}
(2)数组传值,先用JSON.stringify()转成字符串传递
var mode=[{img:"/1.jpg",title:"香蕉",price:"3"},
{img:"/2.jpg",title:"苹果",price:"7"},
{img:"/3.jpg",title:"梨",price:"4"}];
//通过提供的JSON.stingify方法,将对象转换成字符串后传递
wx.navigateTo({
url: "../detail/detail?mode="+JSON.stringify(mode),
})
这里将mode=JSON.stringify(mode)参数传入detail页面, 然后detail页面的 onload 方法内接受。
onLoad:function(options){
var objectId=options.model;
}
2、从页面路由栈中直接获取和操作目标Page对象
var pages = getCurrentPages();
var currPage = pages[pages.length - 1]; //当前页面
var prevPage = pages[pages.length - 2]; //上一个页面
//直接调用上一个页面的setData()方法,把数据存到上一个页面中去
prevPage.setData({
mydata: {a:1, b:2}
})
3、使用全局数据存储
//存储到app对象上的方式
var app = getApp()
app.globalData.mydata = {a:1, b:2}; //存储数据到app对象上
二、页内传值
1、设置id或data-xxx传值
<view bindtap="getId" id="{{item.id}}" data-index="{{item.index}}"></view>
getId:function(event){
var id =event.currentTarget.dataset.id;
var index=event.currentTarget.dataset.index;
}
2、form表单和input输入框
<form bindsubmit=“formSubmit”>
<input name="detail" placeholder="收件人的地址"/>
<input name="username" placeholder="收件人姓名”/>
<input name="phone" placeholder="收件人手机号”/>
</form>
formSubmit:function(e){
var detail =e.detail.value.detail;
var name=e.detail.value.username;
var phone =e.detail.value.phone;
}