对于我的应用程序我使用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代码。但我不确定它是否有点过于强大。
非常感谢你的帮助,
斯蒂芬
答案 0 :(得分:1)
好的,我终于找到了它失败的地方:
can.view
返回一个DocumentFragment,它似乎在初始构建中起作用。
在L.Popup
源代码中,我发现了一行代码与字符串匹配的类型 - DocumentFragment作为对象处理。
我使用can.view.render("leads/popup", viewOptions)
解决了它,它返回了一个带有渲染HTML的字符串。