Leaflet popup在第一次关闭时清除内容

时间:2014-03-21 11:17:05

标签: javascript html leaflet canjs

对于我的应用程序我使用Leaflet并且我使用它很远,所以我确信我理解了传单方式"完成任务。

由于我的所有标记都有一个静态布局,我创建了一个简单的Mustache模板,它插入了变量数据并给了我HTML:

can.view("leads/popup", viewOptions)

这可以按预期工作,并生成一个HTML字符串,可以正确显示。

但当我关闭并重新打开弹出窗口时,会产生一个空的弹出窗口内容。

var popup = L.popup({maxWidth: 1000, closeOnClick: true}, marker);
popup.setContent(can.view("leads/popup", viewOptions));

var marker = L.marker(L.latLng(lng, lat),
  {icon: L.divIcon({
    className: 'lead-icon lead_'+lead._id.$oid,
    iconSize: [size, size],
    html: '<span class="marker-label">' + label + '</span>'
  })
});

marker.bindPopup(popup);
self.displayMarker(marker);

我认为扩展L.Popup类并将_content设置为我的HTML代码。但我不确定它是否有点过于强大。

非常感谢你的帮助,

斯蒂芬

1 个答案:

答案 0 :(得分:1)

好的,我终于找到了它失败的地方:

can.view返回一个DocumentFragment,它似乎在初始构建中起作用。

L.Popup源代码中,我发现了一行代码与字符串匹配的类型 - DocumentFragment作为对象处理。

我使用can.view.render("leads/popup", viewOptions)解决了它,它返回了一个带有渲染HTML的字符串。