2016-08-18 76 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.

總是先處理第一個錯誤。他們通常是後續錯誤的原因。