export function getgps() {
var j = 0;
var w = 0;
loadDDApi.then(() => {
dd.ready(() => {
// 获取当前地理位置信息(单次定位)
dd.device.geolocation.get({
targetAccuracy: 200,
coordinate: 1,
withReGeocode: true,
useCache: true,
onSuccess: function (result) {
var j = result.longitude;//这里经纬度赋值失败
var w = result.latitude//这里经纬度赋值失败
alert(result.longitude);//这里能正常弹窗提示经纬度的值
},
onFail: function (err) { }
});
})
})
this.$("textField_kybrsytl").setValue(j);//设置文本框,j的值还是0
this.$('numberField_kybrsytm').setValue(w);//设置数值框,w的值还是0
}
请问为什么设置选项框内容 j和w 为什么赋值变量失败了呢?
export function getgps() {
var j = 0;
var w = 0;
var _this = this;
loadDDApi.then(() => {
dd.ready(() => {
// 获取当前地理位置信息(单次定位)
dd.device.geolocation.get({
targetAccuracy: 200,
coordinate: 1,
withReGeocode: true,
useCache: true,
onSuccess: function (result) {
var j = result.longitude;
var w = result.latitude;
_this.$("textField_kybrsytl").setValue(j);
_this.$('numberField_kybrsytm').setValue(w);
},
onFail: function (err) { }
});
})
})
同步代码遇到异步代码会跳过不执行,你的.then还没执行,你就去给
this.$("textField_kybrsytl").setValue(j);//设置文本框,j的值还是0
this.$('numberField_kybrsytm').setValue(w);//设置数值框,w的值还是0
两个节点赋值 肯定就是你上方的对应数据
异步
箭头指向的区域放到 对应中间异步代码下方
export function getgps() {
var j = 0;
var w = 0;
loadDDApi.then(() => {
dd.ready(() => {
// 获取当前地理位置信息(单次定位)
dd.device.geolocation.get({
targetAccuracy: 200,
coordinate: 1,
withReGeocode: true,
useCache: true,
onSuccess: function (result) {
j = result.longitude;//这里经纬度赋值失败
w = result.latitude//这里经纬度赋值失败
this.$("textField_kybrsytl").setValue(j);//设置文本框,j的值还是0
this.$('numberField_kybrsytm').setValue(w);//设置数值框,w的值还是0
},
onFail: function (err) { }
});
})
})
export function getgps() {
var j = 0;
var w = 0;
loadDDApi.then(() => {
dd.ready(() => {
// 获取当前地理位置信息(单次定位)
dd.device.geolocation.get({
targetAccuracy: 200,
coordinate: 1,
withReGeocode: true,
useCache: true,
onSuccess: function (result) {
var j = result.longitude;//这里经纬度赋值失败
var w = result.latitude//这里经纬度赋值失败
this.$("textField_kybrsytl").setValue(j);//设置文本框,j的值还是0
this.$('numberField_kybrsytm').setValue(w);//设置数值框,w的值还是0
alert(result.longitude);//这里能正常弹窗提示经纬度的值
},
onFail: function (err) { }
});
})
})
js有作用域链,你在最外层定义了j和w是全局变量,在函数内又定义了一个j和w,函数内的不会去改变全局变量的值,你把函数内j和w前面的var去掉就可以了
var外部定义了,里面你又用var定义,相遇于j、w新实例化了对象!前后已经不相同了
export function getgps() {
var j = 0;
var w = 0;
loadDDApi.then(() => {
dd.ready(() => {
// 获取当前地理位置信息(单次定位)
dd.device.geolocation.get({
targetAccuracy: 200,
coordinate: 1,
withReGeocode: true,
useCache: true,
onSuccess: function (result) {
j = result.longitude;//这里经纬度赋值失败
w = result.latitude//这里经纬度赋值失败
alert(result.longitude);//这里能正常弹窗提示经纬度的值
},
onFail: function (err) { }
});
})
})
this.$("textField_kybrsytl").setValue(j);//设置文本框,j的值还是0
this.$('numberField_kybrsytm').setValue(w);//设置数值框,w的值还是0
}
这样应该没问题了,一开始已经初始化了j,w,你后面onSuccess: function 方法里使用j,w,,不需要加var 了!这样直接报错,因为相当于创建了两个j,w变量,冲突了,这样改之后,onSuccess: function 方法给j,w赋值,后面的赋值文本框就能获取到值了,
如果对你有帮助,请采纳一下