• JOSN.parse():用于将 JSON 字符串 转换为 对象
  • JSON.stringify():用于将 对象/数组 转换为 JSON 字符串

在接收数据时,打印出现 [object, object] 情况,是因为在我们原本传递的是一个对象,在传递过程中对象被转换成了字符串,[object, object] 是对象的字符串形式。通常可以使用 JSON.stringify() 来解析。

  • 例如: 在uniapp中使用路由跳转传参,当我们传递的是一个对象时;
    可以在跳转页面传递时使用JSON.stringify,先将数据转换成JSON格式;
    然后在接收页面使用JSON.parse,将数据解析成对象。
    1. // 页面 A 跳转传参
    2. let obj = {
    3. index: this.index,
    4. value: value
    5. }
    6. uni.navigateTo({
    7. url: `/pages/A/A?obj=${JSON.stringify(obj)}`
    8. })
  1. // 页面 B 接收
  2. onLoad(options) {
  3. console.log(JSON.parse(options.obj))
  4. }

uni.navigateBack() 返回上级页面并传参

需求:在A页面中通过跳转到B页面,在B页面中处理的数据,需要跳转回A页面供其使用

方法:

  • 在B页面的跳转事件中
    1. 使用 getCurrentPages() 详情见官方文档
      获取当前页面栈的实例,以数组形式按栈的顺序给出,第一个元素为首页,最后一个元素为当前页面
    2. 获得上个页面实例
    3. 给上个页面实例绑定方法和参
    4. 返回上一页面

代码展示:

  1. // 返回A页面
  2. goPageA(idx) {
  3. // 1. 获取当前页面栈实例(此时最后一个元素为当前页)
  4. let pages = getCurrentPages()
  5. // 2. 上一页面实例
  6. // 注意是length长度,所以要想得到上一页面的实例需要 -2
  7. // 若要返回上上页面的实例就 -3,以此类推
  8. let prevPage = pages[pages.length -2]
  9. // 3. 给上一页面实例绑定getValue()方法和参数(注意是$vm)
  10. prevPage.$vm.getValue(this.list)
  11. // 4. 返回上一页面
  12. uni.navigateBack({
  13. delta: 1 // 返回的页面数
  14. })
  15. }
  • 在A页面中使用刚刚绑定的getValue()方法接收B页面传递的数据
    1. getValue(list) {
    2. console.log(list,'B页面传递的数据')
    3. }