如图所示,当前有两个tab分别有两个图表,当前还是处于切换缓存的,未更新数据,DOM存在
如不知道怎么在uni-app中使用Echarts 请参考:uni-app中使用Echarts
之前在组件当中发现 v-if 会导致当前数据重刷,导致体验感不强,所以使用了 v-show,由于需要适配,所以宽高比皆为 100% (有min-height ,min-width ) ,这就导致当渲染折线图时饼图也一起被渲染了,由于display :none 这就导致饼图初期取不到宽高,只能默认展示100* 100。
由于我想使用echarts的resize方法,上网找了一大圈,没找到。最后,参考了updateEcharts的使用方法,成功解决tab切换并调用resize方法。话不多说,直接上代码
<!--parent 当前为饼图自定义组件 currTab为切换tab事件函数里定义 -->
<PieChart :currTab="currTab" :pieChartsData="pieChartsData"></PieChart>
// js
// 切换tab 触发事件函数
changeTab(it) {
this.currTab = it.value;
},
// piechart 组件
// currTab 接收传参,并绑定到:change方法中 必须先属性绑定 :currTab,才能绑定:change
<view @click="echarts.onClick" :prop="option" :currTab="currTab"
:change:currTab="echarts.resize"
:change:prop="echarts.updateEcharts" id="pieEcharts"
class="pie-echarts">
</view>
// js 接收传参
props: {
currTab:{
type:String,
default:""
}
}
<script module="echarts" lang="renderjs">
methods: {
// resize 同上面 :change:currTab="echarts.resize" 绑定方法
resize(){
if(myChart){
myChart.resize();
}
},
}
</script>
代码比较简洁,不过都是精简代码,使用起来即可。即时不适用resize方法,也可在当前方法内部调用eharts 实例。