javascript - Javascript 函数内未定义的 Angular 变量?

标签 javascript angular openlayers

我有一个 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值?任何帮助都会很棒!

最佳答案

函数创建一个新的上下文。为了使其按照您期望的方式工作,您可以将 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 如何在 JS 中工作的信息,请参阅 this great answer

关于javascript - Javascript 函数内未定义的 Angular 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58872180/

相关文章:

javascript - 动态添加div

javascript - OpenLayers:单击更改图层源

javascript - 初始化后如何访问类的成员?

javascript - 如何向widget js asset传递参数?

javascript - 如何更新函数内全局对象的值,然后使用 JS 中的另一个函数访问其值?

javascript - 使用 React,为什么 redux saga 不拦截 Action ?

angular - 为什么我的 http 请求取消/停止 observables 流?

angular - ngModel innerHTML 适用于 p 标签但不适用于输入标签 angular2

css - Angular 动态菜单和子菜单样式

javascript - 如果没有可见图层,则忽略 OpenLayers 缩放滚动事件