Vuejs2 在传单弹出窗口中显示列表
Vuejs2 在传单弹出窗口中显示列表,vuejs2,leaflet,Vuejs2,Leaflet,我想在传单弹出窗口中显示无序列表或表格。 项目数量及其内容不同,取决于单击的元素类型。 因此理想情况下,弹出内容应在单击事件上创建 我试图在bindPopup函数中构建列表,但它不起作用 L.marker([mapElement.y * -1, mapElement.x], { uniqueID: mapElement.elementID, mapIconWidth: mapElement.width, icon: new mapIcon({
我想在传单弹出窗口中显示无序列表或表格。 项目数量及其内容不同,取决于单击的元素类型。
因此理想情况下,弹出内容应在单击事件上创建 我试图在bindPopup函数中构建列表,但它不起作用
L.marker([mapElement.y * -1, mapElement.x], {
uniqueID: mapElement.elementID,
mapIconWidth: mapElement.width,
icon: new mapIcon({
iconUrl: icon.mapIcon.imageData,
iconSize: [elementSize, elementSize]
})
})
.addTo(markers)
.bindPopup(mapElement.element.nbr + ' ' + mapElement.element.name + "<br/<ul> <li v-for='state in mapElement.element.states'>{{ state.definition.stateTypeTitle }}</li> </ul>");
L.marker([mapElement.y*-1,mapElement.x]{
唯一标识:mapElement.elementID,
mapIconWidth:mapElement.width,
图标:新建mapIcon({
iconUrl:icon.mapIcon.imageData,
iconSize:[elementSize,elementSize]
})
})
.addTo(标记)
.bindPopup(mapElement.element.nbr+“”+mapElement.element.name+”您不能在弹出窗口的HTML字符串中使用Vue模板语法。但是从文档中可以看出,.bindPopup
方法也可以接受HTML元素。因此,您的方法如下:
首先创建弹出元素:
let popup = new Vue({
template: mapElement.element.nbr + ' ' + mapElement.element.name + "<br/<ul> <li v-for='state in mapElement.element.states'>{{ state.definition.stateTypeTitle }}</li> </ul>",
data: {
mapElement
}
}).$mount().$el
如果要使用vue模板引擎来填充弹出内容,有一个解决方案
我解释过了
使用要在弹出窗口中显示的内容创建组件,但将其隐藏:
<my-popup-content v-show=False ref='foo'><my-popup-content>
并使用它来填充弹出窗口
该方法的最大优点是,您可以使用所有vue功能(v-if、v-bind等)生成弹出内容,并且不再需要混乱的字符串连接。Hi Slim!感谢您的回复!我在哪里创建此弹出元素?如果我尝试在组件内创建它,我将得到一个“vue未定义”"错误。很抱歉这个愚蠢的问题。我是vue新手。好吧,只需在组件中导入vue;从“vue”导入vue
您好。再次感谢!我已更新了我的问题。我无法运行它。您能再帮我一次吗?您得到的错误很明显。您需要导入包含编译器的vue版本,或者使用渲染函数插件代替弹出组件的模板。最简单的方法是为该组件创建一个单独的.vue文件并导入它。我有完全相同的问题,但我无法理解您的答案@Slim
/*...*/
.bindPopup(popup)
<my-popup-content v-show=False ref='foo'><my-popup-content>
const template = this.$refs.foo.$el.innerHTML