Javascript 如何设置变量以显示方法之外的内容?

Javascript 如何设置变量以显示方法之外的内容?,javascript,vue.js,openlayers,Javascript,Vue.js,Openlayers,朋友们,你好 我在vue的数据中得到了一个变量集: var comp= { data() { return{ polygonString:"" } } } 现在,当我想在“modifyend”方法内部设置“polygonString”时,在该方法外部执行console.log()时,它将保持空白: methods:{ addCoordinate(){ modify.o

朋友们,你好

我在vue的数据中得到了一个变量集:

var comp=
{
    data()
    {
        return{
            polygonString:""
        }
    }
}
现在,当我想在“modifyend”方法内部设置“polygonString”时,在该方法外部执行console.log()时,它将保持空白:

methods:{
     addCoordinate(){
         modify.on('modifyend', function (evt) {

            var flat_coords;
            var modified_coords = [];

            evt.features.forEach(function (feature) {
            flat_coords = feature.getGeometry().getCoordinates();

            for (var i in flat_coords) 
            {
                var flat_coord = flat_coords[i];
                for(var coord_array in flat_coord)
                {
                    var lat_lng = flat_coord[coord_array];
                    var transformed_coords = ol.proj.transform(lat_lng,'EPSG:3857','EPSG:4326');
                                
                    modified_coords.push(transformed_coords.toString().replace(",", " "));
                            }
                        }
                    });
                    this.polygonString = modified_coords.toString().replaceAll(",", ", ");
        });
        console.log("POLYGON STRING", this.polygonString);
     }
}

在方法中注册
modifyend
事件侦听器似乎会有问题。您可能应该将注册逻辑移动到其中一个生命周期挂钩,
mounted
created

尝试进行以下更改:

mounted() {
  modify.on('modifyend', this.addCoordinate);
},
methods: {
  addCoordinate(evt) {
    var flat_coords;
    var modified_coords = [];

    evt.features.forEach(function(feature) {
      flat_coords = feature.getGeometry().getCoordinates();

      for (var i in flat_coords) {
        var flat_coord = flat_coords[i];
        for (var coord_array in flat_coord) {
          var lat_lng = flat_coord[coord_array];
          var transformed_coords = ol.proj.transform(lat_lng, 'EPSG:3857', 'EPSG:4326');
          modified_coords.push(transformed_coords.toString().replace(",", " "));
        }
      }
    });
      
    this.polygonString = modified_coords.toString().replaceAll(",", ", ");

    console.log("POLYGON STRING", this.polygonString);
  }
}