Javascript函数中未定义的Angular变量?

我有一个像这样的OpenLayers map变量:

this.map = new Map({
  target: 'map',moveTolerance: 2,layers: [this.capaFondo,this.capaPropia,this.vector],view: new View({
    projection: proyeccion,center: fromLonLat([-1.629950,42.62],proyeccion),zoom: 9.3
  })
});

我正在尝试处理这样的单次点击:

this.map.on('singleclick',function(evt) {
  const p = new Point(evt.coordinate).transform(this.map.getView().getProjection(),proyeccion);
  const properties = ['CP:geometry'];
  const featureRequest = new WFS().writeGetFeature({
        srsname: 'EPSG:25830',featurePrefix: 'CP',featureTypes: ['CadastralParcel'],outputFormat: 'application/json',propertyNames: properties,filter: containsFilter('geometry',p,'EPSG:25830')
  });
}

但是在函数内部,map变量似乎未定义。

如何获取其中的map值?任何帮助都会很棒!

dk4665125 回答:Javascript函数中未定义的Angular变量?

function创建一个新的上下文。为了使其按您期望的方式工作,您可以将function (evt) {}更改为箭头功能,如下所示:

this.map.on('singleclick',(evt) => {
  const p = new Point(evt.coordinate).transform(this.map.getView().getProjection(),proyeccion);
  const properties = ['CP:geometry'];
  const featureRequest = new WFS().writeGetFeature({
        srsName: 'EPSG:25830',featurePrefix: 'CP',featureTypes: ['CadastralParcel'],outputFormat: 'application/json',propertyNames: properties,filter: containsFilter('geometry',p,'EPSG:25830')
  });
}

有关this great answer中JS中this的工作原理的更多信息

,

您必须使用箭头函数才能使用此变量的全局范围

 this.map.on('singleclick','EPSG:25830')
  });
}
本文链接:https://www.f2er.com/3097208.html

大家都在问