gpt4 book ai didi

javascript - Ember : Having trouble trying to use this. 设置为设置一个在 if 语句内声明变量的字段

转载 作者:行者123 更新时间:2023-12-03 04:50:56 25 4
gpt4 key购买 nike

这对大多数人来说可能很容易,但我真的不知道我的代码可能出了什么问题,而且我觉得我已经尝试了一切可能的方法。基本上我想做的是对字符串地址进行地理编码,并将结果存储在我的数据库中。我设法使地理编码部分正常工作,因为它发送回纬度和经度。现在,我想将结果存储回我的数据库中。通常我使用 this.set('myfield', myvar) 但 myvar 设置在“if”内,看起来它阻止我这样做。我能做些什么 ?这是我的 Controller “操作”部分中的代码:

 geocode(location, mylat, mylng) {
const google = window.google;
var geocoder = new google.maps.Geocoder();
var latlng = "";
var lat = "";
var lng = "";

geocoder.geocode( { 'address': location }, function(results, status) {

if (status == google.maps.GeocoderStatus.OK && results.length > 0) {
latlng = results[0].geometry.location;
lat = latlng.lat();
lng = latlng.lng();

alert(lat); // it works
alert(lng); // it works too
this.set(`model.lat`, latlng); //not working here
}
}
);
alert(latlng); // not working
this.set(`model.lat`, latlng); //not working too

},

我花了大概 8 个小时试图解决这个问题,但我完全迷失了,所以任何帮助将不胜感激。非常感谢,

最佳答案

geocode方法的回调中,没有定义this

此处geocoder.geocode( { 'address': location }, function(results, status)

您可以像这样保留对this的引用:

actions: {
geocode(location, mylat, mylng){
const google = window.google;
var geocoder = new google.maps.Geocoder();
var latlng = "";
var lat = "";
var lng = "";
const self = this;

geocoder.geocode({'address': location}, function(results, status) {

if (status == google.maps.GeocoderStatus.OK && results.length > 0) {
latlng = results[0].geometry.location;
lat = latlng.lat();
lng = latlng.lng();

alert(lat); // it works
alert(lng); // it works too
self.set(`model.lat`, latlng); //not working here
}
});
alert(latlng); // not working
this.set(`model.lat`, latlng); //not working too
}

关于javascript - Ember : Having trouble trying to use this. 设置为设置一个在 if 语句内声明变量的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42659519/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com