angular-google-maps - 监听 infowindow domready 事件

angular-google-maps - listen for infowindow domready event

在普通js中监听domready事件Google地图相对容易 概述 here :

infoWindow = new google.maps.InfoWindow();
google.maps.event.addListener(infoWindow, 'domready', function() {
      // whatever you want to do once the DOM is ready
});

但是在 angular-google-maps 中如何做似乎并不明显。

有解决办法吗?

使用Angular Google Maps involves using the infowindow control object - see docs时的解决方法。

this issue 中所述 - 我第一次发布此解决方案的地方 - 您可以在主控制器中创建一个空的信息窗口控制对象:

$scope.infowindowControl = {};

然后你在 ui-gmap-window 指令定义中绑定你的新对象,如:

<ui-gmap-window
    options="windowOptions"
    closeClick="closeClick()"
    control="infowindowControl"
>

在信息​​窗口打开时(实际上不确定在什么时候)- 它会将五个函数传递给您在 $scope 中创建的空对象。其中一些功能在 documentation 中有说明,但以一种相当随意和未定义的方式:

  • getChildWindows()
  • getGWindows()
  • getPlurals()
  • 隐藏窗口()
  • showWindow()

您需要的是 getGWindows() - 您将其放入标记 click 事件中。
这将为您提供一个 数组 打开的信息窗口,您现在可以在标准 google 地图时尚中附加一个事件侦听器,例如:

var windows = $scope.infowindowControl.getGWindows();
    console.log('inside click after getGWindows ', windows);
google.maps.event.addListener(windows[0], 'domready', function() {
    console.log('infowindow domready just fired !!');
});

虽然这不是一个理想的、有据可查的或简单的解决方案(我花了好几个小时才弄明白)——坦率地说,将函数传递给一个空对象是违反直觉的——但它似乎确实有效。

Plunker here.