Javascript 谷歌地图信息窗口中的按钮,可访问页面';s函数

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){

我正在开发Angular2/Ionic 2移动应用程序,并使用google maps JS API在地图上显示标记。单击标记时,将打开一个信息窗口。在这个信息窗口中,我有一个文本和一个按钮。我在单击按钮时调用函数。如果这个函数只是执行一个console.log,那么一切都会正常工作

然而,我想我在范围方面遇到了一个问题。单击按钮时,我不会让它运行以访问页面的任何功能,也不会调用NavController移动到另一个页面

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);
 }