Javascript 数据变量未从VueJS中的方法更新

Javascript 数据变量未从VueJS中的方法更新,javascript,vuejs2,vue-component,vue.js,Javascript,Vuejs2,Vue Component,Vue.js,我使用以下代码从HTML5地理定位API获取访问者的邮政编码(pin码)。但是,我想获取该邮政编码并将其更新为数据变量“pincode”。下面是我使用的代码,该值在控制台中正确打印。但不在“pincode”变量中更新 export default { data(){ return { pincode: 0, } }, methods: { findPincode(){ navigator.geolocatio

我使用以下代码从HTML5地理定位API获取访问者的邮政编码(pin码)。但是,我想获取该邮政编码并将其更新为数据变量“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
                        }
                    }
                });
            });
        }    
    }
}
导出默认值{
数据(){
返回{
pincode:0,
}
},
方法:{
findPincode(){
navigator.geolocation.getCurrentPosition(函数(位置){
var geocoder=new google.maps.geocoder();
var latLng=new google.maps.latLng(
位置.坐标.纬度,位置.坐标.经度);
地理编码({
“latLng”:latLng
},功能(结果、状态){
对于(var i=0;i
这是因为您在
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
       }
   }
});
let self=this
地理编码({
“latLng”:latLng
},功能(结果、状态){
对于(var i=0;i

这应该是可行的。

您可以使用,而不是使用
function()
语法,它不绑定自己的、或,如下所示:

geocoder.geocode({
   'latLng': latLng
}, (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
       }
   }
});
geocoder.geocode({
“latLng”:latLng
},(结果、状态)=>{
对于(var i=0;i
我认为您应该以as
数据:{pincode:0}的形式声明
pincode
,方法:{…}
@SachinGadagi vuejs文档建议使用数据属性作为
data(){return{…properties}}
格式,以防止从范围外进行访问。