Javascript NgMap:为什么我的标记(ng repeat指令)要通过多个参数?

Javascript NgMap:为什么我的标记(ng repeat指令)要通过多个参数?,javascript,angularjs,google-maps,angularjs-ng-repeat,angularjs-google-maps,Javascript,Angularjs,Google Maps,Angularjs Ng Repeat,Angularjs Google Maps,我正在使用NgMap库在我的angular应用程序中使用google maps api 我使用ng repeat指令添加标记,每个标记都带有一个on-click标记,该标记调用控制器并记录到控制台 <ng-map zoom="11" center="[40.74, -74.18]"> <marker ng-repeat="p in vm.positions" position="{{p.pos}}" on-click="vm.showData(p)" //t

我正在使用NgMap库在我的angular应用程序中使用google maps api

我使用ng repeat指令添加标记,每个标记都带有一个on-click标记,该标记调用控制器并记录到控制台

<ng-map zoom="11" center="[40.74, -74.18]">
  <marker ng-repeat="p in vm.positions"
    position="{{p.pos}}"
    on-click="vm.showData(p)" //this is my on-click event, passing through the ng-repeated object
    title="pos: {{p.pos}}"></marker>
</ng-map>
最后,在我的头撞到墙上之后,我决定检查是否有任何其他参数正在传递给控制器函数。瞧,第二个论点是我希望从一开始就通过的

为什么第一次争论不是我所期待的这是与ngMap库、angular有关,还是只是我不知道的javascript细微差别


在这里可以找到一个正在工作的plunker:

经过一些挖掘,它看起来像是一个事件,而不是标记本身

从文档中:

事件应用于地图、标记和形状。 所有与事件相关的属性前面都有“on-”,即单击、鼠标悬停等

作为旁注,要从NgMap获取实际的标记对象,可以使用
this

因此,您的代码也可以如下所示

angular.module('ngMap')。controller('MyCtrl',function(){
var vm=这个;
虚拟机数据=[
{foo:1,bar:1},
{foo:2,bar:2},
{foo:3,bar:3},
{foo:4,bar:4},
{foo:5,bar:5},
{foo:6,bar:6},
{foo:7,bar:7}
];
虚拟机位置=[
{pos:[40.71,-74.21],名字:“dave 1”},
{pos:[40.72,-74.20],名字:“dave 2”},
{pos:[40.73,-74.19],名字:“dave 3”},
{pos:[40.74,-74.18],名字:“dave 4”},
{pos:[40.75,-74.17],名字:“dave 5”},
{pos:[40.76,-74.16],名字:“dave 6”},
{pos:[40.77,-74.15],名字:“dave 7”}
];
vm.showData=函数(事件){
console.log(this.position.lat());
console.log(this.position.lng());
console.log(this.title);
}
});

 vm.showData = function (marker, param){
      console.log(marker) //WHY IS MARKER BEING PASSED THROUGH?!
      console.log(param.name); //THE SECOND ARGUMENT IS THE ONE I WANT, WHY ISN'T IT THE FIRST?
 }