我可以在JavaScript中使用Angular范围函数,但不能在JavaScript

时间:2016-07-14 16:17:09

标签: javascript html angularjs google-maps angularjs-scope

我有一些与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 + "&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>");

我在使用此代码的最后一行时遇到问题。我已经在infoWindow代码之前从控制器执行该函数,并且它的行为正确。但是,我想在单击按钮时在信息窗口中执行该功能。我在infoWindow中包含了这个按钮,但是当我点击按钮时没有任何反应。我想弄清楚这一点,所以我可以添加创建PayPal和信用卡付款的按钮。

以下是我的控制器的代码:

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

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

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

谁能告诉我我做错了什么,或者如何正确解决这个问题?

感谢您的时间。

1 个答案:

答案 0 :(得分:0)

我能够通过这个问题中的选定答案解决我的问题:

Answer