2016-07-14 10 views
0

Ich habe einige JavaScript, die Schnittstelle mit Google Maps ist. Ich habe nicht den ganzen Code eingeschlossen, um dies kurz zu halten, aber sagen wir, es gibt eine Schleife, die für jedes Ereignis, das in einer Ereignisdatenbank ist, eine Markierung auf die Google Map setzt. Durch Klicken auf eine Markierung wird ein InfoWindow geöffnet und Informationen zu diesem bestimmten Ereignis angezeigt. Ich kann bestätigen, dass alles bis jetzt funktioniert.Ich kann Angular Scope-Funktion innerhalb von JavaScript verwenden, aber nicht HTML innerhalb des JavaScript

Zusätzlich ziehe ich den Bereich eines Angular-Controllers in das DOM, so dass ich einige Funktionen von diesem Controller aufrufen kann (ich weiß nicht, ob das die richtige Terminologie ist). Ich kann bestätigen, dass das auch funktioniert. Ich rufe die sayHello() - Funktion vom Controller auf und "Hallo" wird jedes Mal in der Konsole gedruckt, wenn ich auf einen Marker klicke. Hier

ist der Code:

var g = angular.element(document.querySelector('[ng-controller="SignupController"]')).scope(); 
g.sayHello(); 

// display info about the event in an infowindow 
infoWindow.setContent(
"Instructor Name: " + marker.instructorName + 
"<br /> Instructor Email: " + marker.instructorEmail + 
"<br /> Instructor Rating: " + marker.instructorRating + showMe + 
"<br /> <br /> Event Name: " + marker.name + 
"<br /> Event Description: " + marker.description + 
"<br /> Available Spaces: " + marker.spaces + 
"<br /> <br /> Address: " + marker.address + "&emsp;" + marker.city + ", " + marker.state + "&emsp;" + marker.zip + 
"<br /> Location Type: " + marker.locationType + 
"<br /> <br /> Time: " + marker.startTime + " - " + marker.endTime + 
"<br /> Tags: " + marker.tags + 
"<br /> <br /> Distance from you (straight line): " + marker.distance + " miles" + 
"<br /> <br /> Price: $" + marker.price + 
"<br />" + "<button ng-click='g.sayHello();' class='btn btn-primary'>Say Hello</button>"); 

Ich habe Probleme mit der letzten Zeile dieses Codes. Ich führe die Funktion bereits vom Controller vor dem infoWindow-Code aus, und es verhält sich korrekt. Ich möchte jedoch, dass die Funktion im Infofenster ausgeführt wird, wenn ich auf eine Schaltfläche klicke. Ich habe diese Schaltfläche in das InfoWindow eingefügt, aber nichts passiert, wenn ich auf die Schaltfläche klicke. Ich möchte das herausfinden, also kann ich Knöpfe hinzufügen, die PayPal- und Kreditkartenzahlungen verursachen. Hier

ist der Code von meinem Controller:

app.controller('SignupController', ['$scope', 'UserFactory', 'Share', function($scope, UserFactory, Share) { 

    $scope.sayHello = function() { 
    console.log('hello!'); 
    }; 

    ............ 

Kann mir jemand sagen, was ich falsch mache, oder wie man richtig dieses Problem zu lösen?

Vielen Dank für Ihre Zeit.

Antwort

0

konnte ich mein Problem über die gewählte Antwort auf diese Frage lösen:

Answer