vue-qiankun
vue-qiankun copied to clipboard
关于vue3,使用leaflet,弹poput窗的问题。
您好,我在用vue3,使用leaflet,弹poput,使用自定义的vue3组件,我在尝试过程中发现,不能执行dom操作,不知道你有没有遇到这个问题,请教一下,谢谢!
兄弟,截图看看
/**
- 返回vue组件dom
- @param component xxx.vue
- @param props 自定义传递给组件的属性数据
- @returns {any|VNode} dom id */ const returnVueComponentElement = (component, props = {}) =>{ let idtxt = "popupid"; let node = document.getElementById(idtxt); if(!node){ node = document.createElement('div'); node.id = idtxt; document.getElementById('aironemap').appendChild(node); } let instance = createVNode(component,props); render(instance,node); return instance.el; }
//绑定marker 的click事件 marker.on('click', function () {
let popuphtml = returnVueComponentElement(Vuecomm);//Vuecomm是一个单独的组件
var popup = L.popup({'offset':[250,400],'className':'cus-airPopup'}).setLatLng([item.latitude,item.longitude]).setContent(popuphtml);
mapObj.value.openPopup(popup);
});
兄弟,你看一下!
在vue2中,我可以这样实现:如下代码所示
ponitTxt.on('click', function () { const instance = new Vue(Vuecomm);//Vuecomm是一个单独的组件
const el = instance.$mount().$el;
var popup = L.popup({'offset':[250,400],'className':'cus-airPopup'}).setLatLng([23.0383,113.19209]).setContent(el);
map.openPopup(popup);
});