Próbuję otworzyć okno informacyjne, gdy użytkownikklika znacznik na mapie lub gdy użytkownik klika lokalizację z listy lokalizacji. Problem, który mam, polega na tym, że otrzymuję zgłoszenie dotyczące $ już w toku. Aplikacja nadal działa dobrze, ale zgodnie z dokumentacją, jeśli widzę ten błąd, robię coś złego. Oto dwa fragmenty kodu, z którymi mam do czynienia.
Ta pierwsza funkcja umieszcza znaczniki na mapie i odpowiada na zdarzenia kliknięcia znacznika kliknięcia.
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;
});
};
Drugą funkcją jest to, co akceptuje zdarzenie z innego miejsca w aplikacji i wysyła zdarzenie kliknięcia mapy google do znacznika, który chciałbym otworzyć.
$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;
}
}
});
Błąd "Zastosuj już w toku" występuje, gdy wyzwolę zdarzenie kliknięcia mapy Google na znaczniku.
Czy ktoś ma pojęcie, co robię źle?
Odpowiedzi:
0 dla odpowiedzi № 1Wiem, że prawdopodobnie jest lepszy sposób na zrobienie tego, ale ostatecznie dodałem do pliku underscore.js i użyłem podkreślenia, aby skompilować szablon podczas przekazywania danych.
var template = _.template($("#infoWindowTmpl").html()),
compiled = template($scope);
var infoWindow = new google.maps.InfoWindow({
content : compiled
});