我在页面B改了头像,返回到页面A,怎么让页面A在返回的时候头像也刷新一下
可以B页面修改A页面的数据并在onShow里面去检测是都需要刷新
B:
// 获取上一页并修改对应参数
let pages = getCurrentPages();
let lastPage = pages[pages.length - 2];
lastPage.data.avatarUrl= "修改后的url";
lastPage.data.isUrlChange = true;
A:
onShow()里面
if (this.data.isUrlChange) {
this.setData({
avatarUrl: this.data.avatarUrl
});
this.data.isUrlChange= false;
};
8 回答5.9k 阅读✓ 已解决
9 回答9.3k 阅读
6 回答4.9k 阅读✓ 已解决
5 回答3.6k 阅读✓ 已解决
5 回答8k 阅读✓ 已解决
4 回答8k 阅读✓ 已解决
7 回答9.9k 阅读
详细教程:http://blog.sina.com.cn/s/blo...
若从A页面跳到B页面(A--->B),在B页面操作完成后需要刷新A页面的数据,有两种思路:(推荐使用第2种方法)
1.在返回A页面的时候调用A的页面onShow()方法,重新查询加载一次A页面即可,代码为:
onShow: function () {
this.onLoad();
},
这种方法返回A页面时需要重新加载页面,太慢,太Low!!
2.这种方法是极力推荐的:
在B页面中进行操作的时候就在后台刷新A页面,当返回A页面的时候就不需要再刷新加载A页面了:
具体步骤分为两步:
(1)。在父页面中添加刷新数据的方法:
changeData:function(){
this.onLoad();//最好是只写需要刷新的区域的代码,onload也可,效率低,有点low
}
(2)。在子页面中添加方法:并且在需要的地方进行调用(如success方法中setData之后调用that.changeParentData();)
changeParentData: function () {
var pages =getCurrentPages();//当前页面栈
if (pages.length >1) {
var beforePage = pages[pages.length- 2];//获取上一个页面实例对象
beforePage.changeData();//触发父页面中的方法
}
}