最近维护小程序遇到的问题,有n 个页面需要加一个验证的方法,从而改变页面里面的data 的多条数据,然后在进行后续的业务逻辑。
这种问题肯定就是在公共的js 里面写一个方法,然后在每个页面调用一下。但是问题是如何在公共的js 里面修改page 里面 xxx.js data 的数据。
同样引申 修改历史页面的数据 的问题。
经过查阅发现,微信小程序提供了一个方法:
getCurrentPages() 函数用于获取当前页面栈的实例,以数组形式按栈的顺序给出,第一个元素为首页,最后一个元素为当前页面。 注意:不要尝试修改页面栈,会导致路由以及页面状态错误。
不要在 App.onLaunch 的时候调用 getCurrentPages(),此时page 还没有生成。
pages 为一个数组,根据下面的代码以此类推
let pages = getCurrentPages(); // 当前页面栈
let currentPagePage = pages[pages.length - 1]; // 当前页面
let prevPage = pages[pages.length - 2];//上一页面
let _data = currentPagePage.__data__; //页面的数据
// 直接设置页面的值
currentPagePage.setData({
a:1,
b:2
})