症状:
vue情况:
v-if隐藏图表后,再显示
病因:
这就是判断语法使用:
vue方式对比:
v-if 整个dom移除渲染,说人话就是dom【存在】或者【不存在】。
v-show 指令会动态为元素添加或移除style="dispaly:none;"样式,说人话就是dom会【一直存在】
病因核心就是DOM存在!!那解决问题的方式就有很多种了。
JQ、js 就是控制style="dispaly:none;"来解决
所以echartjs基于dom生成图表就是该病因所致。
药方:
那基于上方的病因,就可以有好几个方式控制显示隐藏了。
药方1:
v-if 修改为v-show
药方2:
打死也继续用v-if,那就满足条件,加载下延迟函数渲染dom结束后,执行图表画图
//点击显示
handleClick() {
this.btnActive=1;//1显示
this.$nextTick(() => {
this.drawChar();//图表函数
});
},
药方3:
//点击显示
handleClick() {
this.btnActive=1;//1显示
// 异步方式
let myPromise = new Promise((resolve) => {
resolve()
})
myPromise.then(() => {
this.drawChar();//图表函数
})
},