作者信息

青灯夜游

今天学习一小步,明天提升一大步

最近文章
jquery获取input值有几种方式123
thinkphp扩展插件有哪些639
php怎么把秒转为时分秒691
视频教程分类
推荐视频教程
  • php程序员小白到大牛三个月集训php程序员小白到大牛三个月集训
  • Laravel 9 学习正当时—保姆级教程,想学不会都难!Laravel 9 学习正当时—保姆级教程,想学不会都难!
  • 千万级数据并发解决方案(理论+实战)千万级数据并发解决方案(理论+实战)
  • Laravel基础与实战(模块化)Laravel基础与实战(模块化)
  • UNI-APP开发(仿饿了么)UNI-APP开发(仿饿了么)
  • 首页 >微信小程序 >小程序开发 > 正文

    微信小程序中如何实现子向父传参(页面通信)

    转载2021-10-12 11:24:501551 关注公众号:每天精选资源文章推送
    本篇文章带大家了解一下微信小程序中子页面如何向父页面传递参数,希望对大家有所帮助!

    微信小程序子页面如何向父页面传递参数

    有时候我们在做微信小程序项目的时候,会遇到如下的情况:有一个列表页,页面有一个筛选条件,点击之后跳转页面,进行条件的选择,选择完之后返回到列表页,根据筛选的条件进行数据的查询。一般这种情况更多的时候,我们看到的都是通过弹框形式来进行筛选条件进行处理的。那如果我们就想要跳转页面的这种交互方式,我们如何从子页面把参数传递到父页面呢?

    【相关学习推荐:小程序开发教程

    问题

    • wx.navigateBack 无法携带参数,子页面无法向父页面传递参数。

    子页面操作父页面数据

    这个地方留意一下,我们是说的子页面操作父页面的数据。

    在官方文档上有一个getCurrentPages的API(官网描述如下):

    PageObject[] getCurrentPages()获取当前页面栈。数组中第一个元素为首页,最后一个元素为当前页面。

    • 不要尝试修改页面栈,会导致路由以及页面状态错误。
    • 不要在 App.onLaunch 的时候调用 getCurrentPages(),此时 page 还没有生成。

    通过getCurrentPages这个API,我们可以获取到页面栈的数据,所以就可以获取到指定的页面,在子页面通过修改父页面数据的方式,我们就可以实现子页面向父页面传参的功能。

    const pages = getCurrentPages();
    const gotoPage = pages[pages.length - 1];

    所以pages[pages.length - 1]就为当前页面,父页面就为pages[pages.length - 2],依次类推,我们可以获取到其他的祖先页面。

    然后再使用 setData 方法 gotoPage.setData({xxx: ''})来修改设置父页面的数据,从而达到子页面向父页面传递参数的目的。之后再通过 wx.navigateBack 进行页面返回即可。

    其他解决方式

    • 组件
    • 弹框

    如我们文章开头提到,如果是需要从子页面向父页面传递参数,那我们可以通过弹框的形式显示内容,选择完相应的数据之后,隐藏当前的弹框或者组件。

    更多编程相关知识,请访问:编程入门!!

    以上就是微信小程序中如何实现子向父传参(页面通信)的详细内容,更多请关注php中文网其它相关文章!

    PHP小白到大牛线上直播班第二十期

    声明:本文转载于:掘金社区,如有侵犯,请联系admin@php.cn删除

    相关文章

    相关视频


    专题推荐