A为父页面,B为新开的页面。测试环境:微信小程序开发者工具。
在B中,
getCurrentPages()[getCurrentPages().length - 1 - 1].setData({
test:'new'
})
uni.navigateBack()
发现父页面A的界面已渲染出新值,调试窗口的AppData中也为新值。
但在父页面A中js取值,this.test 仍为旧数据,何解,请高手指教?
setData为官方推荐的那个方法
setData:function(obj){
let that = this;
let keys = [];
let val,data;
Object.keys(obj).forEach(function(key){
keys = key.split('.');
val = obj[key];
data = that.$data;
keys.forEach(function(key2,index){
if(index+1 == keys.length){
that.$set(data,key2,val);
}else{
if(!data[key2]){
that.$set(data,key2,{});
}
}
data = data[key2];
})
});
}
3 个回复
3***@163.com
同样的问题, 在js中 setData 一个数据, 模板中正常显示, 但是js中就是获取不到
2***@qq.com
2022年, 这个问题依然存在, 我修改上个页面的json一个属性的值, 视图变更了, 提交的js上传接口, 还是旧的数据
2***@qq.com
var pages = getCurrentPages();
var prevPage = pages[pages.length - 2]; //上一个页面
prevPage.$vm.real.bankName = 'aaa'
这这种方式可以解决, 不要用setData