1

对于我的应用程序,我使用的是 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 代码。但我不确定它是否有点过于强大。

非常感谢你的帮助,

斯蒂芬

4

1 回答 1

1

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

can.view返回一个似乎在初始构建中工作的 DocumentFragment。

L.Popup源代码中,我找到了一行代码,它们将类型与字符串相匹配 - DocumentFragment 作为对象处理。

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

于 2014-03-21T11:48:31.890 回答