在百度地图的Infowindow中添加vue组件

情况概述:      

在使用百度地图开发应用时,会遇到在maker的infowindow中添加button的需求,一般情况下我们插入一段html就行了。但是当我们使用vuejs开发时,会发现我们插入的v-on这些指令都失效了,这个原因这位dragon清兄弟已经说明的很清楚了,可以参考他发的文章Vue页面动态添加Html标签中如何绑定事件,我按照他提供的方法解决的这个问题,并在留言中感谢了作者,但是发现还有朋友受此问题困扰,所以这里详细说下,也给自己一个记录。

业务需求:     

在infowindow中能够加入button,且能够调用我们在vue对象中定义的方法、变量等。


infowindow


点击楼层维护后,弹出维护窗体

实现步骤:

1:我们需要定义vue组件;

定义组件可以参考官方帮助。大概过程如下:

使用Vue.extend来定义一个扩展,也就是组件。

template:写html

data:定义数据域,注意这里必须按照截图中的方式写,要将数据域定义在 function() {return{ 这里定义数据域 }} 中。切记!

methods:定义方法。

2:需要在infowindow中为组件预留加入的位置;

当在创建marker图标的时候,为你的组件预留需要添加的位置。比如,我在创建marker的时候创建了一个tr,<tr><td id="fm" align="left" colspan="2"></td></tr>,这个id为fm的位置就是我要加入楼层维护组件的位置。

3:在需要的时刻加入组件;

当我们需要添加组件时,首先需要创建组件。

let fmc = new FloorMaintainComponent().$mount();

然后获取元素,就是需要在什么位置添加,然后加入组件。

$('#fm').append(fmc.$el);

4:使用组件及组件使用vue对象;

let app = new Vue({

el: '#app'

});

在你定义的组件内也是可以正常使用app对象中定义的数据、方法的。反之,app中也同样可以调用组件的数据域和方法。

$这个用到了jquery,当然你们都懂得。

通过这种方法就能在一些动态创建的元素中使用vue了。希望能帮到你。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。