Как ждать, пока Angular Google Maps добавит getGMap к объекту управления
Я пытался настроить прослушиватели событий клика наgoogle.maps.Map
объект, который созданui-gmap-google-map
директива отБиблиотека угловых карт Google.
Мне нужно сделать это динамически, поэтому (по крайней мере, после моего краткого тестирования), что использованиеevents
параметр наui-gmap-google-map
директива не будет работать (потому что она, кажется, «читает» значение параметра только один раз, но, возможно, я ошибаюсь в этом).
Поэтому я решил использоватьcontrol
параметр, который дополняет объект, названный значением параметра, методамиgetGMap
а такжеrefresh
, Вот как выглядит использование моей директивы:
<ui-gmap-google-map center="appCtrl.mapSetup.center"
zoom="appCtrl.mapSetup.zoom"
control="appCtrl.mapSetup">
</ui-gmap-google-map>
Наконец, я загружаю API Карт Google асинхронно и полагаюсь наGoogleMapApi
сервис / обещание (часть Angular Google Maps), чтобы знать, когда я смогу безопасно начать работу сgoogle.maps.Map
объект (например, добавление прослушивателей событий и т. д.). Вот небольшой пример того, как это выглядит:
// 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');
});
Поэтому, когда страница загружена (вот скрипка), Я получаю «TypeError: undefined не является функцией», потому чтоmapSetup
объект не был дополненgetGMap
или жеrefresh
, Похоже, что так должно было быть, основываясь на моем понимании документации.
Я завернулaddListener
позвонить с$timeout
(служба Angular), использующая задержку в несколько сотен миллисекунд, а затем она работала, потому чтоmapSetup
объект был к тому времени дополненgetGMap
.
Есть ли способ избежать необходимости использовать$timeout
с произвольной задержкой ждать, покаcontrol
объект на самом деле дополнен?