当用户点击地图上的标记或用户点击位置列表中的某个位置时,我正在尝试打开信息窗口。我遇到的问题是我收到的$ apply已在进行中错误。该应用程序仍然可以正常工作,但根据文档,如果我看到这个错误,我做错了。以下是我正在处理的两段代码。
第一个功能将标记放在地图上,并响应点击标记点击事件。
var placeMarker = function(center) {
var marker = new google.maps.Marker({
map : map,
position : new google.maps.LatLng(center.location.latitude, center.location.longitude)
});
var infoWindow = new google.maps.InfoWindow();
marker.center = center;
$scope.markers.push(marker);
google.maps.event.addListener(marker, "click", function() {
if ($scope.openInfoWindow) {
$scope.openInfoWindow.close();
}
$scope.center = marker.center;
if (!$scope.compiled) {
var content = '<div id="infowindow_content" ng-include src="\'/infowindow.html\'"></div>';
$scope.compiled = $compile(content)($scope);
}
$scope.$apply();
infoWindow.setContent($scope.compiled[0].innerHTML);
infoWindow.open(map, marker);
$scope.openInfoWindow = infoWindow;
});
};
此处的第二个功能是接受来自应用程序中其他位置的事件,并将google地图点击事件发送到我要打开的标记。
$scope.$on("app:ResultListSelection", function(event, providerNumber) {
for (var i = 0, length = $scope.markers.length; i < length; i += 1) {
var center = $scope.markers[i].center;
if (providerNumber === center.providerNo) {
google.maps.event.trigger($scope.markers[i], "click");
break;
}
}
});
当我在标记上触发Google地图点击事件时,会发生$ apply已在进行中错误。
有没有人知道我可能做错了什么?
答案 0 :(得分:0)
我知道可能有更好的方法可以做到这一点,但我最终将underscore.js添加到我的项目中,并使用下划线来编译模板,同时传入数据。
var template = _.template($("#infoWindowTmpl").html()),
compiled = template($scope);
var infoWindow = new google.maps.InfoWindow({
content : compiled
});