vue-qiankun icon indicating copy to clipboard operation
vue-qiankun copied to clipboard

关于vue3,使用leaflet,弹poput窗的问题。

Open BYoungDream opened this issue 2 years ago • 3 comments

您好,我在用vue3,使用leaflet,弹poput,使用自定义的vue3组件,我在尝试过程中发现,不能执行dom操作,不知道你有没有遇到这个问题,请教一下,谢谢!

BYoungDream avatar Nov 29 '22 10:11 BYoungDream

兄弟,截图看看

aehyok avatar Nov 30 '22 15:11 aehyok

/**

  • 返回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);

    });

兄弟,你看一下!

BYoungDream avatar Nov 30 '22 16:11 BYoungDream

在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);

  });

BYoungDream avatar Nov 30 '22 16:11 BYoungDream