2017-06-10 3 views
0
function pushMarkers() { 
    locInfo = new google.maps.InfoWindow(); 
    for (var i = 0; i < model.length; i++) { 
     var loc = model[i].places; 
     var title = model[i].title; 
     model[i].marker = new google.maps.Marker({ 
      position: loc, 
      title: title, 
      animation: google.maps.Animation.DROP, 
      map: map, 
      id: i 
     }); 
     console.log(model[i].title); 
     model[i].marker.addListener('click', function() { 
      console.log('InfoWindow Loop entered'); 
      toggleBounce(this); 
      populateInfoWindow(this, locInfo); 
     }); 
     wikiLink(model[i].marker); 
    } 
} 

ループ内で関数を作成して、ループ外に関数を作成することはお勧めしません。ループ外にmodel [i] .marker.addListener関数を挿入したい

+0

する必要があるだろう、私は誤解だ場合を除き、それは 'モデル[i]が.marker.addEventListener'ない' .addListenerする必要があります' – Paul

答えて

0

実際には複数の関数を作成するべきではありません。一度作成してループ内のリスナーとして接続するだけです。その結果:あなたはあなたはそれが何らかの理由でインデックス(i)を知りたいとしましょう、ループ内でのみ利用可能だというhandleMarkerClick関数にコンテキスト情報を渡す必要がある場合、あなたはそれを結合できること

function handleMarkerClick() { 
    console.log('InfoWindow Loop entered'); 
    toggleBounce(this); 
    populateInfoWindow(this, locInfo); 
} 

model[i].marker.addEventListener('click', handleMarkerClick); 

は注意:

model[i].marker.addEventListener('click', handleMarkerClick.bind(model[i].marker, i); 

と、関数のシグネチャは、あなたが、タイプミスを持ってfunction handleMarkerClick(i, event){}

関連する問題