单张标记单击始终显示最后一个元素

问题描述 投票:1回答:1

我正在使用Angular 5和ngx传单,包括标记簇。一切正常,但click函数始终输出列表最后一个元素的名称,而工具提示包含正确的名称。

for (var i  of this.list) {
      var markerItem = L.marker([i.lat, i.lng], {icon})
        .bindTooltip('<h5>'+i.name+'</h5>')
        .on('click', () => {
          console.log(i);
          this.draw(i);
        });
      data.push(markerItem)
    }
    this.markerClusterData = data;
angular leaflet leaflet.markercluster ngx-leaflet
1个回答
2
投票

你可以改变:

.on('click', () => {
  console.log(i);
  this.draw(i);
}

至:

.on('click', ((i) => () => {
  console.log(i);
})(i))

上面的解决方案使用了闭包。你可以阅读更多关于他们here

你也可以改变

for (var i  of this.list) {

for (let i  of this.list) {

该解决方案利用了let keyword

看看this JSBin,看看一个有效的例子。

© www.soinside.com 2019 - 2024. All rights reserved.