tab栏切换echarts图表时,由于接口过慢,导致快速切换时,第一个的接口还没走完,就会点击第二次,这样就连续走两遍此接口,也会走两遍setInterval,这样图表就会混乱的问题 (比如:我先点击单位,会调单位接口,再点击类型,在快速切回单位,这时候单位的接口还没走完,这样就会连续走两遍单位接口,这样setInterval就会走两遍出问题)
切换调用接口时我是用watch监听去写的
那你就得多做点处理了,得给你的setTimeout拿一个变量接住,再切换的时候判断,如果存在就移除掉哦。如果还不知道怎么修改,就粘贴代码出来,我可以复制修改那种,给你参考参考
点击时给一个loading效果呢,接口调用成功之前不让切换,再就是后端优化一下接口
父页面tab切换:
<div>
<span
v-for="(item,index) in coursewareType"
:key="index"
class="coursewareBtn"
:class="[index===findIndex?'actived':'actived1']"
@click="chooseCourseware(item,index)"
>
{{item.title}}
</span>
</div>
tab切换:
chooseCourseware(item,index) {
this.findIndex=index
},
// 单位
projectUnit(){
//单位调用子页面方法
setTimeout(() => {
this.$refs.child.projectUnit();
}, 1);
},
// 类型
projectType(){
//单位调用子页面方法
setTimeout(() => {
this.$refs.child1.projectType();
}, 1);
},
// 专业
projectMajor(){
//单位调用子页面方法
setTimeout(() => {
this.$refs.child2.projectMajor();
}, 1);
},
},
watch监听:
findIndex(newVal, oldVal){
if(newVal == 0 && oldVal != 0){
this.projectUnit()
}
if(newVal == 1 && oldVal != 1){
this.projectType()
}
if(newVal == 2 && oldVal != 2){
this.projectMajor()
}
},
子页面
this.setInterValAl = setInterval(() => {
if (option.dataZoom[0].endValue == this.provinceList.length - 1) {
option.dataZoom[0].endValue = 6
option.dataZoom[0].startValue = 0
} else {
option.dataZoom[0].endValue = option.dataZoom[0].endValue + 1
option.dataZoom[0].startValue = option.dataZoom[0].startValue + 1
}
myChart.setOption(option,true)
}, 2000)