angular - 传单标记点击始终显示最后一个元素

标签 angular leaflet leaflet.markercluster ngx-leaflet

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

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;

最佳答案

你可以改变:

.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查看工作示例。

关于angular - 传单标记点击始终显示最后一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49360748/

相关文章:

android - deviceready 事件未在 Angular 混合应用程序中触发

html - 使用 Angular 6+ 捕获选择选项值

angular - @Output 事件名称的建议是什么(以防止 native 事件名称冲突)?

css - 按下时更改传单簇的样式

javascript - 如何在传单 map 上显示SQL查询

javascript - 如何使用 CSS 仅设置 div 中的背景图像而不设置 div 标签之间的内容样式?

html - Shiny - 传单 map 内的控制小部件

javascript - 防止多个 markerClusterGroup 图标在 Leaflet 中重叠

leaflet - 使用多个标记集群组显示重叠集群

javascript - 从 map 中删除所有标记