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

标签 javascript vuejs2 vue-component vue.js

我正在使用以下代码从 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
                        }
                    }
                });
            });
        }    
    }
}

最佳答案

这是因为您在 geocoder.geocode 函数中丢失了 this 的上下文

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
       }
   }
});

这应该有效。

关于javascript - 数据变量未从 VueJS 中的方法更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41995304/

相关文章:

javascript - 为什么服务器回调会被多次触发

javascript - 在 Vuejs 中从 child 到 parent 的事件监听

javascript - Vue 组件未渲染 vue-notify

javascript - 为什么我的音频标签在硬编码时加载源代码,而不是在 Vue.js 提供时加载源代码?

javascript - 每次回调后调用下一次迭代

javascript - 如何使用 Backbone.js 在模型上设置动态属性

javascript - free-jqgrid:以编程方式进行本地多重搜索?

vue.js - 如何在 Vuejs 中默认选中单选按钮?

vue.js - 如何使用提供/注入(inject) TypeScript 但没有 vue-class-component

javascript - Vue.js 2.x 选择内部组件未获取值