angular-ui/ui-map 模块能够将 HTML 节点从 DOM 中的任何位置移动到 Google Maps InfoWindow 中,同时保留数据绑定。
<div ui-map-info-window="myInfoWindow">
<h1>Marker {{marker.id}}}</h1>
Lat: <input ng-model="currentMarkerLat">, ...
</div>
这只有效,因为 Google Maps v3 API 允许它传递一个 HTML 节点作为内容参数。
//ui-map.js line 55 - 60
opts.content = elm[0]; //elm[0] is the HTML Node
...
infoWindow = new google.maps.InfoWindow(opts);
我们尝试使用 OpenLayers.Popup 复制此功能,但未能在不丢失其 ng-databinding 的情况下移动 HTML 节点:
//contentDiv is the OpenLayers.Popup container for holding the HTML content to be displayed in the popup
this.contentDiv.appendChild(elm[0]);
这不起作用,只显示没有任何 AngularJS 绑定的 HTML 元素(例如,正在显示胡须,而不是变量值)。
Google Maps API v3 用于保留绑定的技巧是什么?