Я попытался реализовать динамическую карту (Google Map) Infowindow на $ compile и настроил ее на infowindow.
Я хотел бы, чтобы infowindow отображал данные, зависящие от зависающего/щелкнутого маркера, и пользователь может щелкнуть по какой-либо кнопке внутри него, чтобы вызвать функцию $ scope.
Все привязки данных работают нормально (все значение приходит), за исключением функций $ scope, когда я нажимаю кнопку, ничего не запускается.
Вот некоторые из моих кодов:
map.directive.js
///////
function linkFn(scope, element, attrs) {
scope.mapPane = new MapPane();
scope.actionButton = function() {
alert('it should trigger this');
}
function MapPane() {
var self = this;
self.infoWindow = new google.maps.InfoWindow({..})
self.openInfoWindow = function() {
$timeout(function(){
var content = getContentByMarkerType();
var el = $compile(content)(scope);
self.infoWindow.setContent( el );
self.infoWindow.open( map, latlngObj )
}
}
}
}
Для шаблона infowindow я использую ng-bind для значения данных и ng-click = "actionButton()" для вызова функции, но при нажатии кнопки ничего не происходит.
Я что-то сделал или что-то забыл?
Спасибо.
Вы пробовали этот шаблон компиляции?
var compiled = $compile(template);
var elm = complied(scope);
element.append(elm);
Это позволяет полностью создать шаблон и задерживает добавление значений области до тех пор, пока оно не будет.