- JOSN.parse():用于将
JSON 字符串
转换为对象
- JSON.stringify():用于将
对象/数组
转换为JSON 字符串
在接收数据时,打印出现 [object, object] 情况,是因为在我们原本传递的是一个对象,在传递过程中对象被转换成了字符串,[object, object] 是对象的字符串形式。通常可以使用 JSON.stringify() 来解析。
- 例如: 在uniapp中使用路由跳转传参,当我们传递的是一个对象时;
可以在跳转页面传递时使用JSON.stringify,先将数据转换成JSON格式;
然后在接收页面使用JSON.parse,将数据解析成对象。// 页面 A 跳转传参
let obj = {
index: this.index,
value: value
}
uni.navigateTo({
url: `/pages/A/A?obj=${JSON.stringify(obj)}`
})
// 页面 B 接收
onLoad(options) {
console.log(JSON.parse(options.obj))
}
uni.navigateBack() 返回上级页面并传参
需求:在A页面中通过跳转到B页面,在B页面中处理的数据,需要跳转回A页面供其使用
方法:
- 在B页面的跳转事件中
- 使用 getCurrentPages() 详情见官方文档
获取当前页面栈的实例,以数组形式按栈的顺序给出,第一个元素为首页,最后一个元素为当前页面 - 获得上个页面实例
- 给上个页面实例绑定方法和参
- 返回上一页面
- 使用 getCurrentPages() 详情见官方文档
代码展示:
// 返回A页面
goPageA(idx) {
// 1. 获取当前页面栈实例(此时最后一个元素为当前页)
let pages = getCurrentPages()
// 2. 上一页面实例
// 注意是length长度,所以要想得到上一页面的实例需要 -2
// 若要返回上上页面的实例就 -3,以此类推
let prevPage = pages[pages.length -2]
// 3. 给上一页面实例绑定getValue()方法和参数(注意是$vm)
prevPage.$vm.getValue(this.list)
// 4. 返回上一页面
uni.navigateBack({
delta: 1 // 返回的页面数
})
}
- 在A页面中使用刚刚绑定的getValue()方法接收B页面传递的数据
getValue(list) {
console.log(list,'B页面传递的数据')
}