在百度地图的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,,这个id为fm的位置就是我要加入楼层维护组件的位置。

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

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

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

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

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

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

let app = new Vue({

el: '#app'

});

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

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

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

你可能感兴趣的:(在百度地图的Infowindow中添加vue组件)