为什么我不能在循环后访问数组?

时间:2016-08-18 09:00:54

标签: javascript google-maps

使用Google Maps API和AngularJS(1.5.8)。在循环中创建标记后,我无法访问它们。这个代码在initMap函数中:

<ui:UnitTextBox Grid.Row="1" Background="Tomato" Style="{StaticResource WeightTbStyle}" UnitText="KG" Text="{Binding TargetWeight, UpdateSourceTrigger=PropertyChanged}"/>

编辑:

错误在

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++){

感谢@Maxx并感谢所有试图提供帮助的人。 那是一个愚蠢的错误。

1 个答案:

答案 0 :(得分:3)

  

错误:$ scope.posts [i]未定义“

该脚本在行var html = $scope.posts[i].address;上抛出异常。它在那时停止运行。因此,永远不会达到 console.log(markers);

  

但是..我想 - 好的,但它正在工作(标记在地图上显示)

你在循环中。显示了一些标记,然后其中一个值未定义(不是第一个值!),因此您得到一个异常并且脚本停止。

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

  

,稍后再考虑这个错误。

始终先处理第一个错误。它们通常是后续错误的原因。