llamar funcion desde Google map InfoWindows en ionic?

llamar funcion desde Google map InfoWindows en ionic?

Estoy tratado de llamar una funcion desde  un InfoWindows de Google Maps API, pero me muestra el siguiente error:

(index):1 Uncaught ReferenceError: ir is not defined
      at HTMLButtonElement.onclick ((index):1)

Al parecer dice que la función ir() no está definida.
Éste es mi código:
addMarker(position,map,title){
    var marker = new google.maps.Marker({
      position,
      map,
      title
    });

    var infoWindow = new google.maps.InfoWindow({
      content:" "
    });

    marker.addListener('click',function(){
      infoWindow.setContent('

'+ title +'

' + ''); infoWindow.open(map,marker); }); } Función ir() la cual sí tengo definida: ir(){ console.log("vamos"); } Al momento de darle click al botón que creo en el infowindows me muestra el error. Estuve investigando y no encuentro la respuesta. Basicamente lo que trato de hacer es esto http://jsfiddle.net/doktormolle/8ZsSp/

Solutions/Answers:

Answer 1:

Finalmente encontré la solución

básicamente es colocarle un id al botton

   marker.addListener('click',function(){
      infoWindow.setContent('<h1> '+ title +'</h1>' +
          '<button id="' + id +'"  class="mapaboton" >Ver Detalles</button>'); 
        infoWindow.open(map,this);
    });

y luego

un evento addListenerOnce

   google.maps.event.addListenerOnce(infoWindow, 'domready', () => {
      document.getElementById(id).addEventListener('click', () => {
               this.navCtrl.push(RestauranteDetallePage,{ codigo : id})
          });
  });

Answer 2:

Lo que pasa es que ir() no es una función, es un método de tu componente, por eso no escribiste function delante (no es por que sea , tiene la misma sintaxis):

class MiClase {

  constructor() {
    this.atributo="hola";
  }
  
  ir() {
    console.log(this.atributo);
  }
  
  addOnClick() {
  console.log('add');  document.getElementById('test').innerHTML='<label onclick="ir()">hola</label>';
  }
}

let obj= new MiClase();

obj.ir();
obj.addOnClick();
  
#test {
height: 100px;
width: 100px;
border: 1px solid black;
}
<div id="test"></div>

Por tanto, tienes que definir la función fuera del componente para que sea accesible:

class MiClase {

  constructor() {
    this.atributo="hola";
  }
  
  ir() {
    console.log(this.atributo);
  }
  
  addOnClick() {
  console.log('add');  document.getElementById('test').innerHTML='<label onclick="ir()">hola</label>';
  }
}



let obj= new MiClase();
let ir= obj.ir.bind(obj);
obj.addOnClick();
#test {
height: 100px;
width: 100px;
border: 1px solid black;
}
<div id="test"></div>

References

Loading...