Vue解决echart在element的tab切换时显示不正确(现在已经不能用lazy了)

在tab控件上渲染多个echart图表,然后切换查看时,发现图表的宽度不正确原因:在页面进行加载时,隐藏的图表找不到对应的div大小,所以默认给了一个大小。所以要做的就是在页面加载时,就对图表进行初始化。网上真的是太多太多太多坑了,服了,各种能不能用的都不先自己测试一下再贴上去,真心服了这些人。本来element tabs里面有个很好解决的办法就是在tab-pane添加上lazy='true’...
摘要由CSDN通过智能技术生成

在tab控件上渲染多个echart图表,然后切换查看时,发现图表的宽度不正确

原因:在页面进行加载时,隐藏的图表找不到对应的div大小,所以默认给了一个大小。所以要做的就是在页面加载时,就对图表进行初始化。

网上真的是太多太多太多坑了,服了,各种能不能用的都不先自己测试一下再贴上去,真心服了这些人。本来element tabs里面有个很好解决的办法就是在tab-pane添加上lazy='true’属性即可,不过现在已经没有这个属性了!没有了!看图,在这里插入图片描述
官方已经把这个属性去掉了,那么现在要怎么修改呢,这里有一个很好办法,亲测绝对有效。

原理:利用v-if属性,当切换至对应的tab时,设置其v-if的值为true即可,同时设置默认显示的tab。

代码如下:

<template>
  <div>
    <el-tabs type="card" v-model="tabItem">
      <el-tab-pane label="第一页" name="tab1">
        <charts v-if="'tab1' === tabItem"></charts>
      </el-tab-pane>
  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
el-timeline 和 echart 的 map 可以通过以下步骤进行结合: 1. 在 el-timeline 中设置需要展示的间轴数据。 2. 在间轴上选择某个间点,获取该间点的数据。 3. 将该间点的数据传递给 echart 中的地图组件。 4. 在地图组件中根据传递的数据进行渲染。 具体实现可以参考以下代码示例: ```html <template> <div> <el-timeline v-model="timelineData"> <el-timeline-item v-for="(item, index) in timelineData" :key="index" :timestamp="item.time" > {{ item.title }} </el-timeline-item> </el-timeline> <div ref="mapContainer" style="width: 100%; height: 500px;"></div> </div> </template> <script> import echarts from 'echarts' export default { data() { return { timelineData: [ { time: '2021-01-01', title: '2021年' }, { time: '2021-02-01', title: '2021年2月' }, { time: '2021-03-01', title: '2021年3月' } ] } }, mounted() { this.renderMap() }, methods: { renderMap() { const chart = echarts.init(this.$refs.mapContainer) const option = { // echart 的地图配置项 series: [ { type: 'map', map: 'china' } ] } chart.setOption(option) // 监听 el-timeline 的间轴切换事件 this.$watch('timelineData', (newVal) => { const data = this.getDataByTime(newVal) this.updateMapData(chart, data) }) }, getDataByTime(data) { // 根据当前间轴选中的间点获取对应数据 // 返回数据格式如下: // [ // { name: '北京', value: 100 }, // { name: '上海', value: 200 } // ] // name 表示地区名称,value 表示该地区的数据值 // 数据值可以根据实际需求进行设置 return [] }, updateMapData(chart, data) { // 更新地图数据 const option = chart.getOption() option.series[0].data = data chart.setOption(option) } } } </script> ``` 在上面的代码中,el-timeline 展示了间轴数据,当用户切换间轴,会调用 `getDataByTime` 方法获取对应的数据,然后调用 `updateMapData` 方法更新地图数据。其中,`getDataByTime` 方法需要根据当前间点获取对应的数据,并返回一个数组,数组中每个对象表示一个地区的数据信息。`updateMapData` 方法则是将获取到的数据更新到 echart 的地图组件中。需要注意的是,echart 需要在 `mounted` 钩子函数中进行初始化,否则无法正常渲染。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值