Ionic framework Ionic:如何从嵌套方法访问构造函数对象?

Ionic framework Ionic:如何从嵌套方法访问构造函数对象?,ionic-framework,leaflet,Ionic Framework,Leaflet,我使用传单绘制地图,传单绘制绘制形状。我能够绘制和保存形状以及检索它们。我正在努力如何与检索到的形状交互 在我的特殊情况下,我想初始化一个popover myfile.ts constructor(public popoverCtrl: PopoverController) {...} drawShape(data) { let shape = {...} // has geometry etc. L.geoJSON(shape, { onEachFeatur

我使用传单绘制地图,传单绘制绘制形状。我能够绘制和保存形状以及检索它们。我正在努力如何与检索到的形状交互

在我的特殊情况下,我想初始化一个popover

myfile.ts

constructor(public popoverCtrl: PopoverController) {...}

drawShape(data) {
    let shape = {...} // has geometry etc.

    L.geoJSON(shape, {
        onEachFeature: this.onEachFeature
      }).addTo(this.myMap);
}


onEachFeature(feature, layer) {
    layer.on('click', function (e) {
    let popover = this.popoverCtrl.create('MyComponent', { layer: event });

    popover.present();
});
我无法访问
this.popopcovertrl
,因为它与构造函数的作用域不同。如何访问popover组件


谢谢你的建议

所以你需要在你的案例中处理这个问题。为此,您可以使用fat arrow函数来执行此操作,因为它们不会创建自己的“this”,这与匿名函数和其他函数不同:请参见图层中。在我将匿名函数更改为fat arrow函数的部分:

onEachFeature(feature, layer) {
    layer.on('click', event => {
    let popover = this.popoverCtrl.create('MyComponent', { layer: event });

    popover.present();
});
有时,如果遍历各种执行上下文,那么从组件方法“获取”所需的“this”仍然会有问题。在这种情况下,您也可以在组件方法中执行此技巧:通过变量指定方法

onEachFeature = (feature, layer) => {
    layer.on('click', event => {
    let popover = this.popoverCtrl.create('MyComponent', { layer: event });

    popover.present();
});
这基本上阻止了您的方法创建自己的“This”上下文


PS:请注意,您的代码在函数的参数中定义了不同的事件,然后在代码中定义了不同的事件(e vs event)。我希望您能够解决这个问题,因此您需要在您的案例中处理这个问题。为此,您可以使用fat arrow函数来执行此操作,因为它们不会创建自己的“this”,这与匿名函数和其他函数不同:请参见图层中。在我将匿名函数更改为fat arrow函数的部分:

onEachFeature(feature, layer) {
    layer.on('click', event => {
    let popover = this.popoverCtrl.create('MyComponent', { layer: event });

    popover.present();
});
有时,如果遍历各种执行上下文,那么从组件方法“获取”所需的“this”仍然会有问题。在这种情况下,您也可以在组件方法中执行此技巧:通过变量指定方法

onEachFeature = (feature, layer) => {
    layer.on('click', event => {
    let popover = this.popoverCtrl.create('MyComponent', { layer: event });

    popover.present();
});
这基本上阻止了您的方法创建自己的“This”上下文


PS:请注意,您的代码在函数参数和代码中定义事件的方式不同(e vs event)我希望您能够解决这一问题

我看到您的方法onEachFeature将事件定义为“e”,然后将其用作“事件”-我在回答中没有解决这一问题,所以请小心;)看到了-谢谢你抓住它!我看到您的方法onEachFeature将事件定义为“e”,然后将其用作“事件”-我在回答中没有解决这个问题,所以请小心;)看到了-谢谢你抓住它!这是非常有帮助的!谢谢你详细的回答!这是非常有帮助的!谢谢你详细的回答!