我已经阅读了这个answer,但仍然让代码工作时头疼。
我的需求略有不同。而不是警告我必须绑定每个对象。 我的代码是:
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());
问题是上面的代码给出了所有的最后一个对象。我假设this
和函数级别存在问题。那么如何用单独的文本绑定每个标记呢?
答案 0 :(得分:3)
它应该是:
marker.on('mouseover', function(en){
return function(){
this.bindPopup(" Found"+en+" event(s)").openPopup();
}
}(events_number) );
你必须传递你想要保存在闭包中的值(在本例中为events_number
),并且函数必须接受一个参数来接收该值并在闭包中使用它({{ 1}}在我的代码中。)