Wie warten, bis Angular Google Maps getGMap an das Steuerobjekt angehängt hat

Ich habe versucht, Klickereignis-Listener auf dem @ einzurichtegoogle.maps.Map Objekt, das vom @ erstellt wurui-gmap-google-map Direktive von derAngular Google Maps-Bibliothek.

Ich muss dies dynamisch tun, also scheint es (zumindest durch meine kurzen Tests), dass mit derevents Parameter auf demui-gmap-google-map Direktive wird nicht funktionieren (weil es den Parameterwert nur einmal zu "lesen" scheint, aber vielleicht irre ich mich dabei).

So habe ich mich für das @ entschiedcontrol Parameter, der das durch den Parameterwert benannte Objekt mit den Methoden @ erweitegetGMap undrefresh. So sieht die Verwendung meiner Direktive aus:

<ui-gmap-google-map center="appCtrl.mapSetup.center"
                    zoom="appCtrl.mapSetup.zoom"
                    control="appCtrl.mapSetup">
</ui-gmap-google-map>

Schließlich lade ich die Google Maps-API asynchron und verlasse mich auf dasGoogleMapApi service / versprechen (Teil von Angular Google Maps) zu wissen, wann ich mit dem @ sicher umgehen kagoogle.maps.Map object (z. B. Hinzufügen von Ereignis-Listenern usw.). Hier ist ein kleines Beispiel, wie das aussieht:

// inside the AppController constructor, see the fiddle linked below
var mapSetup = this.mapSetup;
GoogleMapApi.then(function () {
    google.maps.event.addListener(mapSetup.getGMap(), 'click', function () {
        alert('hello');
    });

So wenn die Seite geladen wird hier ist die Geige) Erhalte ich "TypeError: undefined ist keine Funktion", weil dasmapSetup Objekt wurde nicht mit @ erweitegetGMap oderrefresh. Es scheint so, als hätte es so sein sollen, basierend auf meinem Verständnis der Dokumentation.

Ich habe das @ eingewickeaddListener anruf mit$timeout (der Angular-Dienst) mit ein paar hundert Millisekunden Verzögerung, und dann hat es funktioniert, weil diemapSetup Objekt war zu diesem Zeitpunkt mit @ erweitert wordgetGMap.

Gibt es eine Möglichkeit, die Verwendung von @ zu vermeide$timeout mit einer willkürlichen Verzögerung warten, bis dascontrol -spezifiziertes Objekt ist tatsächlich erweitert?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage