0
点赞
收藏
分享

微信扫一扫

微信小程序之页面传递对象数组

四月Ren间 2022-07-14 阅读 98

报错:

page lifeCycleMethod onLoad function SyntaxError: Unexpected end of JSON input

原因分析:

由于传递了大量数据到下一个界面导致;目前有本地存储,url传参,或者把参数设置成全局数据源。看个人所需来弄

 //跳转到选商品的界面,这里需要把参数格式化传递
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)
},

举报

相关推荐

0 条评论