微信小程序之更新上一页数据(十二)

小程序开发过程当中常常有这种需求,须要把当前页面数据传递给上一个页面,可是wx.navigateBack()没法传递数据。javascript

通常的办法是把当前页面数据放入本地缓存,上一个页面再从缓存中取出。java

除此以外还有一种办法,巧妙利用页面栈。小程序

getCurrentPages() 函数用于获取当前页面栈的实例,以数组形式按栈的顺序给出,第一个元素为首页,最后一个元素为当前页面。数组

重点就在这里,在当前页面拿到上一个页面的实例对象,而后调用该对象的方法完成数据传递。缓存

页面A微信

Page({
     data: {
        name: ''
     },
     ...
     ,
     //更新name
     changeData: function(name){
        this.setData({
            name: name
        })
     }
})

页面B,假设有一个文本框用于输入姓名,点击返回按钮后更新页面A的name函数

Page({
    //此方法用于文本框输入回调
    inputTyping: function (e) {
        //获取页面栈
        var pages = getCurrentPages();
        if(pages.length > 1){
            //上一个页面实例对象
            var prePage = pages[pages.length - 2];
            //关键在这里
            prePage.changeData(e.detail.value)
        }
    }
})

这样就能够实现数据传递给上一个页面,要注意页面A必须使用wx.navigateTo跳转到页面B,不能使用wx.redirectTo,这样会关闭上一个页面,致使页面B没法获取上一页Page实例。学习

你也能够关注个人微信公众号『ITNotes』, 一块儿交流学习 。
this

相关文章
相关标签/搜索