为什么可以看到data里的值却不能调用

在onload里通过数据库传入数据,调用setData函数改变值,但好像一出onload就用不了

img

img

img

不是不能用,而是用的位置不对,onload你使用wx.request或者调用云api读取云数据库是吧,这个是异步操作,是不会挂起其他代码执行的,所以异步执行完成调用this.setData之前,onReady早已经执行了,所以onReady事件中this.data中是没有work这个数据项的。在调用work中的键就会出错了。

要使用到work数据的地方,应该要放到异步操作完毕后调用this.setData({work:res.data})之后。应该改为下面的逻辑,有帮助麻烦点个采纳【本回答右上角】,谢谢~~有其他问题可以继续交流~

 
Page({
    userWorkData(){
    //需要使用work数据的代码
      console.log(this.data)
    }
    ,
    onReady(){ console.log('onReady')},
    onLoad(){
      wx.request({url:'xxxxxx',success(res){
        this.setData({work:res.data});
        this.userWorkData();//////////////////需要request成功调用setData后才调用,这样就没问题了
      }})
    
  },

建议使用created事件里面调用函数实现。

报错已经给你提示了,未定义,你在没有定义他的时候使用它就是这样的结果,你的代码里的work定义了吗?如果这个对象里面有work,json格式的你为什么不给work加上双引号 "work":res.data

第一个打印JSON.parse(JSON.stringfy(this.data))就不会有work了,那个work是后来加到this.data这个对象里的