父页面:
export default {
data() {
return {
type: '水果',
tags: ['苹果','梨子','香蕉']
}
},
methods: {
openChild() {
uni.navigateTo({
url: '/pages/child',
success: (res) => {
uni.$emit('xdata', {type: this.type, tags: this.tags});
}
}
}
}
}
子页面:
export default {
data() {
return {
type: '',
tags: []
}
},
onLoad: function (option) {
uni.$once('xdata', (res) => {
this.type = res.type;
this.tags = res.tags;
});
}
}
子页面修改本身的type和tags如下:
{type:'蔬菜', tags: ['青菜', '菠菜', '大白菜']}
然后点击导航栏后退按钮,返回到父页面,
此时父页面的tags的值变成子页面的tags的值了 ['青菜', '菠菜', '大白菜'],
然而type却没改变,关键并没有从子页面传递消息给父页面说要变值了,不知道为什么会这样?
4 个回复
最佳回复
DCloud_UNI_OttoJi - 日常回复 uni-app/x 问题,如果艾特我没看到,请主动私信
根据你的描述和解决问题的思路,楼上给出了答案,你可以了解 js 对象和简单值的区别。对象、数组是引用类型
冬日睛天
可能是数组有弱引用导致的。
3***@163.com (作者)
数组会跟着变,字符串的就不会变,非常奇怪,两边字段名字换成不一样的,依然不能解决子页面修改数组后,父页面也修改了数组的问题
3***@163.com (作者)
将数组字段 JSON.stringify 后再传递就没问题了,但不知道为什么数组就是不行