2016-08-18 38 views
-2

使用Google Maps API和AngularJS(1.5.8)。在循环中创建标记后,我无法访问它们。此代码initMap函数内部:为什么我不能在循环之后访问数组?

var markers = []; 

for(var i=0; i<10; i++){ 

    var html = $scope.posts[i].address; 

    var marker = new google.maps.Marker({ 
     map: map, 
     position: {lat: parseFloat($scope.posts[i].lat), lng: parseFloat($scope.posts[i].lng)} 
    }); 

    markers.push(marker); 

    bindInfoWindow(markers[i], map, infoWindow, html); 

} 

markers // no error messages, nothing 
console.log(markers); // still nothing 

编辑:

错误是在

for(var i=0; i<10; i++){ 

更改为:

for(var i=0; i<$scope.posts.length; i++) 

感谢@Maxx并感谢所有谁试图帮助 。 这是一个愚蠢的错误。

+0

这是怎么回事:“标记//没有错误信息,什么都没有”?在将标记推到标记之前,标记是否返回?和什么bindInfoWindow方法呢? – Ionut

+0

请张贴你的角码。或者任何其他细节,因为它似乎不是一个明确的问题 –

+0

@Ionut,我的意思是,在标记变量没有反应。我认为浏览器的控制台会显示错误或其他内容。但没有。 – 49volro

回答

3

Error: $scope.posts[i] is undefined"

脚本在行var html = $scope.posts[i].address;上抛出异常。它在那一刻停止运行。因此,从未达到console.log(markers);

but.. I thought - OK, but it's working (markers are showing on map)

你是在一个循环中。一些标记正在显示,然后其中一个值是未定义的(不是第一个值!),所以你会得到一个异常并停止脚本。

您或许可以通过循环到数组的length而不是硬编码的10项来解决此问题。

, think about that error later.

总是先处理第一个错误。他们通常是后续错误的原因。