需求
For example,首页有一篇文章,点击进入文章详情页,首页和详情页都有收藏功能,如何在详情页收藏成功之后,首页的收藏状态可以 无刷新修改?
getCurrentPages()
getCurrentPages()函数用于获取当前页面栈的实例,以数组形式按栈的顺序给出,第一个元素为首页,最后一个元素为当前页面。我们可以从控制台打出该值(从首页进入第二层页面):
从图中可以看出,每一个元素都包含了对应页面栈里面的所有方法;所以我们也可以通过这种方式,获取到上一个层页面里面的data值,并且能修改data值,从而做到返回上一页不刷新页面,既能改变页面中的显示状态:
/**
*
*/
_updateHome() {
// 从首页过来 && 验证倒数第二个页面栈为首页(当前页的上一页)
let pages = getCurrentPages();
let l = pages.length;
let home = pages[l - 2];
if (home && home.route.indexOf('home') > -1) {
let read = home.data.read;
home.setData({
read: !read // 将修改完的状态赋值给home页的Data
});
}
},
这样就解决了返回上一页 不刷新页面更新状态了。