(angularjs-google-maps)在标记内单击

jak*_*sek 3 google-maps angularjs angularjs-directive angularjs-google-maps

这个问题是关于angularjs-google-maps,https://github.com/allenhwkim/angularjs-google-maps

有没有办法在标记上使用ng-click来设置这样的变量?(为了测试目的,1的值是硬编码的).单击当前标记似乎不会触发ng-click.

<marker ng-repeat="instance in common.instances" 
 position="[{{instance.lat}},{{instance.lng}}]" 
 ng-click="common.selectedinstance = 1">
</marker>
Run Code Online (Sandbox Code Playgroud)

all*_*kim 5

从他们的文档https://developers.google.com/maps/documentation/javascript/events,

用户事件(例如"单击"鼠标事件)将从DOM传播到Google Maps API.这些事件与标准DOM事件是分开的并且不同.

据我所知,只有谷歌地图事件可以应用于谷歌地图对象,包括标记,形状等.

这是坏消息.

好消息是你仍然可以使用on-click事件来操纵$scope变量和事件.只要您为此事件使用函数,就没有太大区别.

我将继续调查是否有解决办法,以便我们可以使用AngularJS事件(即ngMouseenger,ngMouseleave.ngMouseup,ngClick等

使用on-click的工作示例是plunkr以满足您的要求.

http://plnkr.co/edit/6qvS0vUYkqVHZ3t6qmn2?p=preview

这是脚本部分

  $scope.myVar = 1;
  $scope.changeMyVar = function(event) {
    $scope.myVar+=1;
    $scope.$apply();
  }
Run Code Online (Sandbox Code Playgroud)

这是HTML部分

  <map zoom="11" center="[40.74, -74.18]">
    <marker ng-repeat="p in positions" 
      position="{{p}}" title="{{p.toString()}}"
      on-click="changeMyVar()">
    </marker>
  </map>
  myVar : {{myVar}}  Click a marker to increase myVar
Run Code Online (Sandbox Code Playgroud)

要了解有关angularjs-google-maps事件的更多信息,请查看有关事件的示例