我有这个Ionic 2打字稿文件。我试图从另一个方法设置变量的值。我收到关于模态的未定义。
无法在下面设置 coord 的值。
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);
}
}
在标记拖动事件中,我更新变量值或坐标,但在打印时该值未定义。你能帮我解释一下代码吗?
感谢。
答案 0 :(得分:1)
因为回调方法中的this
不是RegisterMapPage
实例,因为您使用function() {}
语法进行回调。使用arrow function获取正确的上下文:
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.
});