Javascript 谷歌地图信息窗口中的按钮,可访问页面';s函数
我正在开发Angular2/Ionic 2移动应用程序,并使用google maps JS API在地图上显示标记。单击标记时,将打开一个信息窗口。在这个信息窗口中,我有一个文本和一个按钮。我在单击按钮时调用函数。如果这个函数只是执行一个console.log,那么一切都会正常工作 然而,我想我在范围方面遇到了一个问题。单击按钮时,我不会让它运行以访问页面的任何功能,也不会调用NavController移动到另一个页面Javascript 谷歌地图信息窗口中的按钮,可访问页面';s函数,javascript,angular,typescript,google-maps-api-3,Javascript,Angular,Typescript,Google Maps Api 3,我正在开发Angular2/Ionic 2移动应用程序,并使用google maps JS API在地图上显示标记。单击标记时,将打开一个信息窗口。在这个信息窗口中,我有一个文本和一个按钮。我在单击按钮时调用函数。如果这个函数只是执行一个console.log,那么一切都会正常工作 然而,我想我在范围方面遇到了一个问题。单击按钮时,我不会让它运行以访问页面的任何功能,也不会调用NavController移动到另一个页面 addInfoWindow(marker, origContent){
addInfoWindow(marker, origContent){
let infoWindow = new google.maps.InfoWindow();
var content = document.createElement('div');
content.innerHTML = (origContent);
var button = content.appendChild(document.createElement('input'));
button.type = 'button';
button.id = 'showMoreButton';
button.value = 'show more';
google.maps.event.addDomListener(button, 'click', function () {
request();
// this works. the method "request()" is called on a click on the button
});
google.maps.event.addListener(marker, 'click', () => {
infoWindow.setContent(content);
});
function request() {
this.navCtrl.push(RequestPage);
// this does not work (scope reasons?). I can't access any method or component of my page.
}
}
例如,我必须做什么才能访问NavController?我尝试了很多不同的东西,包括NgZone,但都没有运行…找到了解决方案。这太容易了。我可以使用如下“绑定”访问我的页面功能:
button.addEventListener('click', this.request.bind(this, variable1));
// calls the function "request(variable1)"
完整背景:
addInfoWindow(marker, origContent){
let infoWindow = new google.maps.InfoWindow();
var content = document.createElement('div');
content.innerHTML = (origContent);
var button = content.appendChild(document.createElement('input'));
button.type = 'button';
button.id = 'showMoreButton';
button.value = 'show more';
button.addEventListener('click', this.request.bind(this, resultsOneUser));
google.maps.event.addListener(marker, 'click', () => {
infoWindow.setContent(content);
});
}
function request() {
this.navCtrl.push(RequestPage);
}