uni-app使用uni.$emit()和uni.$on()传值后列表页面不渲染
更新数组要用.splice(索引, 数量, 元素)
·
场景描述:
有两个页面,列表页A和详细页B;打开列表页A,再打开详细页B;
对详细页B编辑数据(如姓名),提交保存,返回列表页A,预期看到列表页A的数据已更新、页面已渲染;
遇到的问题:列表页A的数据已更新、页面未渲染。
发现问题:更新数组元素 数组[索引]=元素;
解决方法:更新数组元素要用 .splice(索引, 数量, 元素);
详细页B的代码:
onUnload(){
uni.$emit('staffInfoWatch', {id: this.staff_id});
}
列表页A的代码:
onReady() {
let _this = this;;
uni.$on('staffInfoWatch',function(data){
_this.getInfo(data);
}); // 监听下级页面操作
},
onUnload() {
uni.$off('staffInfoWatch');
},
methods: {
async getInfo(data){
let _this = this;
let params = {id: data.id};
if(data.id){
let res = await your.request('m=staff&c=index', params);//向服务端获取该员工最新的数据
if(res.error == 200){
if(res.data.list.length == 1){
let info = res.data.list[0];
_this.list.forEach((item,index)=>{
if(item.id == data.id){
//_this.list[index] = info;//这样写只能更新数组,但是页面不渲染
_this.list.splice(index, 1, info);//这样写,解决了问题。
return;
}
})
}
}
},
//省略
}
更多推荐
已为社区贡献3条内容
所有评论(0)