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用于保护绑定的技巧是什么?