微信小程序之页面传递对象数组
2019-07-22 本文已影响1人
追逐繁星的阿忠
报错:
page lifeCycleMethod onLoad function SyntaxError: Unexpected end of JSON input
原因分析:
由于传递了大量数据到下一个界面导致;目前有本地存储,url传参,或者把参数设置成全局数据源。看个人所需来弄
参考地址:https://blog.csdn.net/Ruffaim/article/details/80841979
//跳转到选商品的界面,这里需要把参数格式化传递
var info = encodeURIComponent(JSON.stringify(groupArr));
wx.redirectTo({
url: '/pages/goods_new/addCard/addCard?info=' + info,
})
//接收处理:
//let info = decodeURIComponent(options.info);
//let groupList = JSON.parse(info);
/**
* 生命周期函数--监听页面加载
* @zxyuns 这里做自由套餐的添加商品操作界面
* 数据从上一个界面传递过来,这里要渲染并实现添加商品进购物车的逻辑
*/
onLoad: function (options) {
let self = this
debugger
let info = decodeURIComponent(options.info);
let groupList = JSON.parse(info);
console.log(groupList);
debugger
wx.hideShareMenu()
/*//数据操作
self.updatePageData()
//购物车坐标
this.busPos = {};
let itemW = app.globalData.ww/5;
this.busPos['x'] = itemW * 3 + itemW / 2 - 15;
this.busPos['y'] = app.globalData.hh + app.tabBarH / 2;*/
},
总结,向下一级页面传递对象或者数组的方式是相同的;
先将要传递的参数通过JSON.stringify(obj)方法转化为字符串,再在下级页面onLoad()的options中,将传递的参数再转化为对象或者数组,就可以正常使用了!!!
// 通过JSON.stringify(obj) 方法将对象转化为字符串进行传递
// 跳至结算页
/**
* 向下一级页面传递对象参数
*/
buyAction: function(e) {
var model = JSON.stringify(e.currentTarget.dataset.obj);
wx.navigateTo({
url: '../detail/detail?model=' + model,
})
}
在下个页面接收
//在下个页面的onload中获取,
onLoad: function (options) {
var model = options.obj;
console.log(options.obj)
this.setData({
model:model
})
},
/**
* 向下一级页面传递对象参数
*/
buyAction: function(e) {
var model = JSON.stringify(selected_list);
wx.navigateTo({
url: '../detail/detail?model=' + model,
})
}
在下个页面接收
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
// 先将字符串转化为数组
var list = JSON.parse(options.selected_list)
console.log(list)
},