收藏
回答

app.globalData奇怪问题,值被覆盖。

//小程序页面A代码
var page = 'getUserList.php',
data = {
  uId: app.globalData.userInfo.id
}
app.post(page, data).then((success_data) => {
      var users = success_data.data;
      that.setData({
        users: users
      })
    }).catch((fail_message) => {
      //app.alert(fail_message);
    });

//然后跳转到页面B

//小程序页面B代码
var page = 'getUserList.php',//这里与页面A地址相同
data = {
  uId: app.globalData.userInfo.id
}
app.post(page, data).then((success_data) => {
      var users = success_data.data, myInfo = app.globalData.userInfo;
      myInfo.id = 0;//这里会覆盖上一级页面(页面A)的 app.globalData.userInfo.id
      users.unshift(myInfo);
      that.setData({
        users: users
      })
    }).catch((fail_message) => {
      //app.alert(fail_message);
    });
//然后返回页面A

//当由页面B返回页面A时,app.globalData.userInfo.id 的值等于0 了。
回答关注问题邀请回答
收藏

1 个回答

  • Admin ²º²⁴
    Admin ²º²⁴
    2020-04-06
    myInfo是引用
    你修改了里面的id值为0了,自然globalData里面的userInfo也为0
    2020-04-06
    有用 1
    回复 3
    • 百姓
      百姓
      2020-04-06
      如果我只是想实现myInfo赋值呢?就是说之后myInfo的变化不影响 app.globalData.userInfo。
      2020-04-06
      回复
    • 百姓
      百姓
      2020-04-06
      谢谢解答,已解决。将 myInfo = Object.assign({}, app.globalData.userInfo) 即可。
      2020-04-06
      回复
    • Admin ²º²⁴
      Admin ²º²⁴
      2020-04-06回复百姓
      对的。或者myinfo = {...app.globalData.userInfo},这个是整个object的复制,而不是直接引用。
      2020-04-06
      回复
登录 后发表内容
问题标签