【问题标题】:angular-google-maps - listen for infowindow domready eventangular-google-maps - 监听 infowindow domready 事件
【发布时间】:2016-12-14 18:59:52
【问题描述】:

在普通js谷歌地图中监听domready事件相对容易 正如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 中执行此操作似乎并不明显。

有解决办法吗?

【问题讨论】:

    标签: angularjs google-maps infowindow angular-google-maps domready


    【解决方案1】:

    使用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.

    【讨论】:

      猜你喜欢
      • 2012-03-29
      • 2011-07-21
      • 1970-01-01
      • 1970-01-01
      • 2017-08-27
      • 1970-01-01
      • 2015-11-23
      • 1970-01-01
      • 2014-02-02
      相关资源
      最近更新 更多