我正在使用以下代码从HTML5地理位置API获取访问者邮政编码(密码)。但是,我想获取该邮政编码并将其更新为数据变量'pincode'。下面是我使用的代码,值在控制台中正确打印。但是没有更新'pincode'变量。
export default {
data(){
return {
pincode: 0,
}
},
methods: {
findPincode(){
navigator.geolocation.getCurrentPosition(function (position) {
var geocoder = new google.maps.Geocoder();
var latLng = new google.maps.LatLng(
position.coords.latitude, position.coords.longitude);
geocoder.geocode({
'latLng': latLng
}, function (results, status) {
for (var i = 0; i < results[0].address_components.length; i++) {
var address = results[0].address_components[i];
if (address.types[0] == "postal_code") {
console.log(address.long_name) // prints 680001
this.pincode = Number(address.long_name) // not working
}
}
});
});
}
}
}
答案 0 :(得分:9)
这是因为您在this
函数
geocoder.geocode
的上下文
let self = this
geocoder.geocode({
'latLng': latLng
}, function (results, status) {
for (var i = 0; i < results[0].address_components.length; i++) {
var address = results[0].address_components[i];
if (address.types[0] == "postal_code") {
console.log(address.long_name) // prints 680001
self.pincode = Number(address.long_name) // not working
}
}
});
这应该有用。
答案 1 :(得分:5)
您可以使用arrow function,而不是使用if($response->getStatusCode() == 401){
dd('you are not authorized');
}
if($response->getStatusCode() == 200){
dd('you are authorized');
//Store user credentials on cache
CacheStore::storeUserCredentials(json_decode((string) $response->getBody(), true));
}
语法,而{@ 3}}不会绑定它自己的this,arguments,super,或new.target。,如下:
function()