如何在Element UI 对话框里面加载高德地图

在Element UI 对话框里面加载高德地图的时候发现:被包裹在对话框组件中的地图无法显示,而写在普通页面的地图则没有这种问题

在普通页面地图显示正常

在弹窗中地图无法显示 我们可以看到同样的代码,如果不写在对话框里,显示就没有问题。看了element ui的源码,终于发现问题的原因: 可以看到,对话框里的内容由此div包裹,而这个div的显示或隐藏是使用了v-if指令,查阅vue官方文档,可以了解到v-if的特性:

这也就是说,当对话框未打开之前,我们写在钩子函数中的初始化地图的方法虽然执行了,但因为v-if绑定的状态为假,实际上地图并没有初始化成功,而当我们打开对话框,也就是将v-if渲染条件设为真的时候,mounted方法不会执行,所以对话框里装的只是一个没有经过高德构造函数渲染的普通div,那么我们看到的也就只会是一片空白了。

了解了原因,就找到解决办法了,可以用watch监测对话框显示状态的那个变量

地图显示出来了 还有一种方式也可以加载地图

将地图放入一个组件中,在弹窗中引入这个子组件也可以加载地图

同样是通过对话框显示状态的那个变量来判断地图的加载

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值