对于小程序而言,传值的方式倒是很简单,直接拼参数就行,例如:
wx.navigateTo({
url: '../payOne/addPassenger/addPassenger?contacts=' + contacts + "&phone=" + phone + "&sfz=" + sfz
})
上面就是一个典型的跳转页面并传值的方法。
在接收界面里的onLoad方法:
onLoad: function(e) {
console.log("接收的参数:" + e.contacts + "*******" + e.phone + "***********" + e.sfz)
}
这样就可以接收上个界面传递的值了。处理之后,需要返回上一个界面,如果不回调,直接回到上个界面:
let pages = getCurrentPages();
let prepage = pages[pages.length - 2];
wx.navigateBack({})
如果需要给上一个界面传值,那么需要添加参数:
let pages = getCurrentPages();
let prepage = pages[pages.length - 2];
prepage.setData({
contacts: contacts.toString(), //传递的参数
phone: phone.toString(), //传递的参数
sfz: sfz.toString(), //传递的参数
jump: "true"
});
wx.navigateBack({})
然后在第一个界面的onshow方法里接收:
var contacts = this.data.contacts; //获取联系人
var phone = this.data.phone; //获取电话
var sfz = this.data.sfz; //获取身份证
ok!!!接收的参数过来了。这个就是简单的传参方法。
对于简单的需求没问题,如果是一个列表,
点击第一个,进行更改操作,需要把id传过去,一顿操作之后,在返回来,再根据id就能更改了。问题来了,如果,更改了第一个新疆的,此时的id是0,在点击第二个,此时的操作不是更改,而是返回,那么就会出错,你会发现,第二个里面的值,全都变成了第一条数据里的值。原因在于,点击的时候,需要把里面的值传过去,因为客户有可能只会更改几个值,其他的不改,所以还要把剩余不更改的值在拿回来。当,点击小程序上面的返回时,返回的数据依然是上次的数据。但是因为点击的id变了,二传递的值却没变,所以造成数据错乱。二小程序没有返回的操作。本人的方法是,在app里定义一个参数A,根据这个A的值来判断是否做了更改,如果更改,就进行操作,如果未更改,则不操作。二更改A的值,则在第二个界面里面的onUnload方法操作。