AngularJS ng-click не вызывает функцию в окне ui-gmap - PullRequest
0 голосов
/ 02 мая 2019

У меня есть событие клика, которое я прикрепляю к информационному окну Google Maps с помощью тега <a>.Тем не менее, она не будет вызывать функцию, даже если она говорит, что она активирована.

Я попытался добавить ng-app="" и ng-controler="" безуспешно

.controller('mainCtrl', function($scope, $rootScope, $stateParams,
            uiGmapGoogleMapApi, $cordovaGeolocation, $state, $firebase,
            $ionicModal) {
    var createMap = function(position){
        angular.extend($scope, {
            map: {center: {latitude: position.coords.latitude,longitude:position.coords.longitude},
                zoom: 13,
                markers: markersarray,
                options: {
                    // This is an example of a variable that cannot be placed outside of uiGmapGooogleMapApi without forcing of calling the google.map helper outside of the function
                    streetViewControl: false,
                    mapTypeControl: false,
                    scaleControl: false,
                    rotateControl: false,
                    zoomControl: false
                }, 
                events: {
                    click: function (map, eventName, originalEventArgs) {
                        var e = originalEventArgs[0];
                        Marker_Latt = e.latLng.lat();
                        Marker_Long = e.latLng.lng();
                        $scope.openModal();
                    }
                },
                markersEvents: {
                    click: function(marker, eventName, model, args) {
                        for(var i = 0; i < markersarray.length; i++){
                            if(markersarray[i].id === marker.key){
                                var content = '';
                                content += '<div ng-app="main" ng-controller="mainCtrl"><p>Added By: <a style="cursor: pointer;" [routerLink]="" (click)="navigatetoUser()">'+markersarray[i].username+'</a></p>';
                                content += '<p>Added On: ' + markersarray[i].date.toString() + "</p></div>";
                                navigateUserID = markersarray[i].userid;
                                createWindow(marker.get('map'), marker, content);
                               break;
                            }
                       }


                    },
                    dblclick:function(marker, eventName, model, args) {
                        console.log("double click!" + marker);
                    }
                },
            } 
        } );
    };

    $scope.navigatetoUser = function(){
        console.log("button clicked..");
        //$scope.data.selectedUserID = navigateUserID;
        //$state.go('userProfile', $scope.data);
    };
    function createWindow(map, marker, content){
        var infowindow = new google.maps.InfoWindow({
            content: content
         });
         infowindow.open(map, marker);
    }
  });

Функция navigatetoUser () не сработалаи я не вижу никаких ошибок


Исходный код: '' '

    <ui-gmap-window isiconvisibleonclick="true">
      <p> {{CurrentMakerTitle}}
        <a href="" ng-click="$root.navigatetoUser()"> 
         {{CurrentMakerUserName}}
        </a>
        <br>{{CurrentMakerDateAdded}}
      </p>
    </ui-gmap-window> 
</ui-gmap-marker> 

' '' Я изменил его на информационное окно, так как в нескольких окнах отображается информация о последнем щелчке -

1 Ответ

0 голосов
/ 03 мая 2019

Спасибо всем, кто прокомментировал, мне удается решить проблему, выполнив следующее:

click: function(marker, eventName, model, args) {
    for(var i = 0; i < markersarray.length; i++){
        if(markersarray[i].id === marker.key){
            navigateUserID = markersarray[i].userid;
            var content = '<p>Added By:  <a id="Info_'+marker.key+'" style="cursor: pointer;" [routerLink]="">'+markersarray[i].username+'</a></p>'
            content += '<p>Added On: ' + markersarray[i].date.toString() + "</p>";
            createWindow(marker.get('map'), marker, content, marker.key);**
           break;
        }
   }
}
function createWindow(map, marker, content, key){
        var infowindow = new google.maps.InfoWindow({
            content: content
        });
        infowindow.open(map, marker);
        google.maps.event.addListener(infowindow, 'domready', function() {
            var mapDiv = document.getElementById('Info_'+key+'');
            google.maps.event.addDomListener(mapDiv, 'click', function() {
                navigatetoUser();
            });
        });
    }
...