2017-07-01 1 views
0

Ich habe diese Ionic 2 Typoskript-Datei. Ich versuche, Wert einer Variablen von einer anderen Methode zu setzen. Ich erhielt undefiniert beim Schließen des Modals.Ionic 2 (Typescript) - Problem mit variabler Bereich und Übergabe Variablen

nicht in der Lage, den Wert für coord unten einzustellen.

export class RegisterMapPage { 

     .. essential var here.. 
     public coord: any; 

     constructor(
      .... 
    ) {} 

     ionViewDidLoad() { 
      this.initMap() 
     } 

     initMap() { 
      this.geolocation.getCurrentPosition().then((position) => { 

        // // // ..... All map related code here.... 

        google.maps.event.addListener(marker, 'dragend', function() { 
         this.coord = marker.getPosition().lat() + ', ' + marker.getPosition().lng(); 
         console.log(this.coord); // prints perfectly here. 
        }); 

      }, (err) => { 
        console.log(err); 
      }); 
     } 

     chooseCoord() { 
      console.log(this.coord); // undefined ?? 
      this.viewCtrl.dismiss(this.coords); 
     } 

} 

Auf Marker Drag-Ereignisse aktualisiere ich den Variablenwert oder coord aber der Wert ist nicht definiert, wenn ich es drucken. Kannst du mir bitte mit dem Code helfen?

Danke.

Antwort

1

Da die this in Ihrer Callback-Methode nicht RegisterMapPage Instanz ist, da Sie die function() {} Syntax für den Rückruf verwenden. Verwenden Sie arrow function, um den richtigen Kontext zu erhalten:

google.maps.event.addListener(marker, 'dragend',() => { 
    this.coord = marker.getPosition().lat() + ', ' + marker.getPosition().lng(); // `this` here will point to `RegisterMapPage` instance now that you use arrow function 
    console.log(this.coord); // prints perfectly here. 
}); 
+0

Vielen Dank. Wie klein war ein Problem, haha. Vielen Dank – Deepankar