获取位置信息的代码是这样的:
wx.getLocation({
success: res => {
var latitude = res.latitude;
var longitude = res.longitude;
this.setData({
latitude:latitude,
longitude:longitude
})
},
})
data中的代码是这样的:
data: {
srcHeight:'',
location:'',
latitude:'',
longitude:''
},
获取屏幕高度的数据可以传到data中,但是获取位置信息的数据就无法传到data中,都是使用this.setData,有没有大佬能教一下?
在第二行添加 var self = this 把this.setData改为self.setData 这样代码没毛病 你外面要打印数据前提是wx.getLocation得走完success后
这个好像还是异步请求的问题,后来这样写success中的数据还是传过去的,在wxml页面也是有显示的,我查了一下异步的定义,好像是在外面打印数据的时候,在异步请求的同时继续往下执行函数,所以打印出来的值没有赋值上去,但是值其实是已经传过去的,在success里面打印的值就是已经赋上的值。我的理解是这样的,不知道对不对
对 success是异步函数 和最外面打印的this.setData() 一块执行 当success里面没执行完时,外面就打印undefined
朋友,我猜测你绝对是getLocation的success还没走完你就console.log this里面的内容了,这是一个异步的方法哦,你要等success走完再打印才会有
主要就是没怎么搞明白异步,在wx.getLocation里面console.log是有的,在wx.getLocation外面console.log数据就不对了,但是在wxml中引用数据还是有的,我主要就是为了wxml中引用数据,现在用是能用了,就是还是不怎么明白异步,有点懵。。。
异步的含义你百度下比较靠谱,我也只是意会,言传的话我怕说不清,还有一定你也要注意一下,this.setData这个方法也是异步的
嗯嗯好的,谢谢啦
在外面吧 this 重新定义哈
如 let that = this;
还是不行。。。数据还是没有传到data中
success 里面打出日志
这个是success里面console.log(this)的结果
1 确定data里有定义
latitude
longitude
2 在success 里
console.log(res)
console.log("latitude1="+that.data.latitude)
var latitude = res.latitude; var longitude = res.longitude;
that.setData({
latitude:latitude,
longitude:longitude
})
console.log("latitude2="+that.data.latitude)
你就可以看到数据赋值没有了
在success里面console.log输出是有数据的,但是到了wx.getLocation函数外面再console.log()data里面的latitude就没有数据了
之前有一个写法是报setData of undefined这个的错的
是报 setData of undefined 什么什么的吗?
我这么写没有报错,只是数据没有传到data中
你在 success里console.log过吗?确认进去了的?
success里面能console.log输出的
你console.log(this)看看是啥呢?展开它,截个图
这样的