2013-09-08 1 views
0

Я прочитал это answer, но все еще болит голова при создании кода.Loop bind objects

У меня есть несколько разные потребности. Вместо оповещения я должен привязать каждый объект. Мой код:

for (var i = 0; i < markers_length; i++) { 
    events_number = data.markers[i].events_number //data.markers is a multidimentional array 
    marker = L.marker([ data.markers[i].latitude , data.markers[i].longitude ]); //just create the new object 
    marker.on('mouseover', function(){ 
     return function(){ 
      this.bindPopup(" Found"+events_number+" event(s)").openPopup(); 
     } 
    }(i)); 
} 

Я использую листовку, если вы спросите. Для одного объекта, bindPopup будет работать как:

marker.on('mouseover', this.bindPopup('hi').openPopup()); 

Проблема заключается в том, что приведенный выше код дает последний объект для всех. Я предполагаю, что есть проблема с и уровнем функций. Итак, как я могу привязать каждый маркер отдельным текстом?

ответ

3

должно быть:

marker.on('mouseover', function(en){ 
    return function(){ 
     this.bindPopup(" Found"+en+" event(s)").openPopup(); 
    } 
}(events_number)); 

Вы должны передать значение, которое вы хотите быть сохранены в замыкании (events_number в данном случае), а функция должна принимать параметр, чтобы получить это значение и используйте его в закрытии (en в моем коде).

 Смежные вопросы

  • Нет связанных вопросов^_^