我有一些与Google地图接口的JavaScript。我没有包含所有代码来保持这个简短,但是我们可以说有一个循环可以在Google Map上为事件数据库中的每个事件添加一个标记。单击标记将显示infoWindow并显示有关该特定事件的信息。我可以确认到目前为止的一切都有效。
此外,我将Angular控制器的范围扩展到DOM中,因此我可以从该控制器调用一些函数(我不知道这是否是正确的术语)。我可以确认这也有效。我从控制器调用sayHello()函数,每次单击标记时都会在控制台中打印“hello”。
以下是代码:
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 + " " + marker.city + ", " + marker.state + " " + 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>");
我在使用此代码的最后一行时遇到问题。我已经在infoWindow代码之前从控制器执行该函数,并且它的行为正确。但是,我想在单击按钮时在信息窗口中执行该功能。我在infoWindow中包含了这个按钮,但是当我点击按钮时没有任何反应。我想弄清楚这一点,所以我可以添加创建PayPal和信用卡付款的按钮。
以下是我的控制器的代码:
app.controller('SignupController', ['$scope', 'UserFactory', 'Share', function($scope, UserFactory, Share) {
$scope.sayHello = function() {
console.log('hello!');
};
............
谁能告诉我我做错了什么,或者如何正确解决这个问题?
感谢您的时间。