使用Angular Google Maps 时的解决方案涉及使用 infowindow 控件对象 - see docs。
正如this issue 中所述 - 我第一次发布此解决方案的地方 - 您可以在主控制器中创建一个空的 infowindow 控件对象:
$scope.infowindowControl = {};
然后在ui-gmap-window 指令定义中绑定新对象,例如:
<ui-gmap-window
options="windowOptions"
closeClick="closeClick()"
control="infowindowControl"
>
在 infowindow 打开时(实际上不确定在什么时候) - 它会将五个函数传递给您在 $scope 中创建的空对象。其中一些功能在documentation 中注明,但以一种相当随意且未定义的方式:
- getChildWindows()
- getGWindows()
- getPlurals()
- hideWindow()
- showWindow()
您需要的是getGWindows() - 您将其放入标记click 事件中。
这将为您提供一个打开的 infowindows 的 array,您现在可以以标准的 google maps 方式附加一个事件侦听器,例如:
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.