收藏
回答

云开发回调函数用this.setData问题?

代码如下:

var that = this;

var markerList = [];

db.collection('lost_found').get().then(res => {

var lists = res.data.reverse();

markerList=lists;

for (var i = 0; i < markerList.length; i++) {

that.setData({

'markersObj.id': this.data.markers.length + 1,

'markersObj.longitude': markerList[i].longitude,

'markersObj.latitude': markerList[i].latitude,

})

switch (markerList[i].signName) {

case 'foundThings': that.setData({

'markersObj.iconPath': "../../images/8.png",

'markersObj.callout.content': "失物招领",

'markersObj.callout.color': "#FF3333"

});break;

case 'clubActivity': that.setData({

'markersObj.iconPath': "../../images/10.png",

'markersObj.callout.content': "社团活动",

'markersObj.callout.color': "#FF5511"

});break;

case 'market': that.setData({

'markersObj.iconPath': "../../images/9.png",

'markersObj.callout.content': "二手市场",

'markersObj.callout.color': "#33CCFF"

});break;

}

app.globalData.markerArray.push(this.data.markersObj);

}

}).catch(err => { console.error(err) })

我在onShow里用console.log("长度"+app.app.globalData.markerArray.length)

控制台显示长度为0,我想问一下为什么用setData出回调函数后全局数据就未被修改呢?求好心人给我讲解或者修改一下代码谢谢了!!!!


回答关注问题邀请回答
收藏

3 个回答

  • Thinker
    Thinker
    02-03
    异步问题 你在外面打印时数据还没有 当然为0
    02-03
    赞同
    回复
  • 铅笔画不出蜡笔的味道
    铅笔画不出蜡笔的味道
    02-03

    确定名称没写错吗

    02-03
    赞同
    回复 6
    • 😄
      😄
      02-03
      不好意思我打错了,我在程序里写的是对的但长度就是为0
      02-03
      回复
    • 铅笔画不出蜡笔的味道
      铅笔画不出蜡笔的味道
      02-03回复😄
      那就把数组打印出来看看啊
      02-03
      回复
    • 😄
      😄
      02-03
      02-03
      回复
    • undefined
      undefined
      02-03回复😄
      没问题啊。这还是异步的问题啊。你没看回调外的先打印吗
      02-03
      回复
    • 😄
      😄
      02-03
      不知道耶,我不明白为什么值就没被修改
      02-03
      回复
    查看更多(1)
  • undefined
    undefined
    02-03
    oh my god! 你先确定this.data.markersobj有值,再判断其它的。别一口气解决,一步一步排查,排除法解决
    02-03
    赞同
    回复 11
    • 😄
      😄
      02-03
      在回调函数里是有值的,回调函数外就没值了
      02-03
      回复
    • undefined
      undefined
      02-03回复😄
      你这么提供截图,我根本看不出来有值还是没值。请求是异步的,值先打印,这会可能查询还没结束呢,然后你代码写的有问题,把app.globalData的值弄没了
      02-03
      回复
    • 😄
      😄
      02-03
      02-03
      回复
    • undefined
      undefined
      02-03回复😄
      代码没毛病啊  执行的结果,也符合预期
      02-03
      回复
    • 😄
      😄
      02-03
      哪里有问题呢?麻烦说一下谢谢啦
      02-03
      回复
    查看更多(6)
登录 后发表内容
问题标签