我有java脚本函数,它给当前lat长的内部函数发出一个http post调用,就像这个“this.http.post”但函数内部的null值
我的代码
ngOnInit(): void {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(p) {
var LatLng = new google.maps.LatLng(p.coords.latitude, p.coords.longitude);
console.log(p.coords.latitude);
console.log(p.coords.longitude);
var dataObj = {
latitude: p.coords.latitude,
longitude: p.coords.longitude
};
this.http.post('https://XXXXX/datacenteres.php', {
dataObj
})
.subscribe(
res => {
console.log(res);
},
err => {
console.log("Error occured");
}
);
}
}
}
我在控制台中收到此错误“无法读取属性'http'的null”。
内部navigator.geolocation.getCurrentPosition(function(p){this is null}
在If语句中,我能够获得“this”。
答案 0 :(得分:3)
您可以使用如下箭头功能:
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(p => {
//var LatLng = new google.maps.LatLng(p.coords.latitude, p.coords.longitude);
console.log(p.coords.latitude);
console.log(p.coords.longitude);
var dataObj = {
latitude :p.coords.latitude,
longitude:p.coords.longitude
};
this.http.post('https://XXXXX/datacenteres.php', {
dataObj
})
.subscribe(
res => {
console.log(res);
},
err => {
console.log("Error occured");
}
);
})
}
答案 1 :(得分:2)
试试这样:
使用函数的.bind(this)
结尾
ngOnInit(): void {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(p) {
var LatLng = new google.maps.LatLng(p.coords.latitude, p.coords.longitude);
console.log(p.coords.latitude);
console.log(p.coords.longitude);
var dataObj = {
latitude: p.coords.latitude,
longitude: p.coords.longitude
};
this.http.post('https://XXXXX/datacenteres.php', {
dataObj
}).subscribe(res => {
console.log(res);
}, err => {
console.log("Error occured");
});
}.bind(this));
}
}
答案 2 :(得分:1)
只需将this
存储到变量中,然后在回调函数中使用它。它'非常方便
ngOnInit():void {
var self = this;
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function (p) {
var LatLng = new google.maps.LatLng(p.coords.latitude, p.coords.longitude);
console.log(p.coords.latitude);
console.log(p.coords.longitude);
var dataObj = {
latitude :p.coords.latitude,
longitude:p.coords.longitude
};
self.http.post('https://XXXXX/datacenteres.php', {
dataObj
})
.subscribe(
res => {
console.log(res);
},
err => {
console.log("Error occured");
}
);
}
}
}