Fork Me On Github

微信小程序跨页面传值

需求:跳转到另一个页面选择一些东西然后显示在页面中 例如:进入筛选项页面,选择,然后回到列表页面刷新页面。

第一种方法

app.js 里的 app.globalData 上设一个属性,进行传值共享

例如:

设置一个可共享的属性 data

App({
    globalData: {
        data: {}
    }
})

第二个页面 设置值

Page({

    tapBack() {
        getApp().globalData.data = {};
        wx.navigateBack();
    }
})

第一个页面获取值

Page({

    onShow() {
        const data = getApp().globalData.data;
    }
})

这种方法简单常用,但是使用不灵活,而且可能需要清理 getApp().globalData 上的属性,

第二种方法

直接通过 wx.navigateBack 调用页面上的方法进行回调

wx.navigateBack({
    success() {
        setTimeout(() => {
            let page = getCurrentPages().pop(); 
            if (!page) {
                return; 
            }
            // TODO
        }, 10);
    }
});

这里需要注意 getCurrentPages().pop() 获取到的页面需要加上延迟,不然在真机上会获取到的是未返回的页面

例如:

第二个页面 返回值

Page({

    tapBack() {
        wx.navigateBack({
            success() {
                setTimeout(() => {
                    let page = getCurrentPages().pop(); 
                    if (!page) {
                        return; 
                    }
                    page.selectedBack({});
                }, 10);
            }
        });
    }
})

第一个页面接收值

Page({

    selectedBack(data) {
        // TODO
    }
})
点击查看全文
0 5 0