zoukankan      html  css  js  c++  java
  • echarts第二次渲染不出来的原因

    场景描述

    echarts主要用于数据可视化展示
    有些时候,我们可能会根据不同的条件,在页面上进行显示和隐藏。
    比如说:页面最初展示了数据,当我点击不同的按钮的时候。
    echarts会对应的展示或者隐藏。
    下面当我点击单个机构的时候。
    echarts会隐藏,点击多个机构的时候,echarts会展示出来。
    

    使用v-show在本地没有问题但是上线后第二次不能够正确显示

    <template>
        <div>
            <el-button type="primary" @click="handerDemo(1)">单个机构</el-button>
            <el-button type="primary" @click="handerDemo(2)">多个机构</el-button>
            <div id="demo" v-if="showFlag"></div>
        </div>
    </template>
    
    <script>
    import echarts from 'echarts'
        export default {
            data() {
                return {
                    showFlag:true
                }
            },
            created(){
                // 我的请求,模拟的数据,大家不同管它
                this.$api.get("http://127.0.0.1:666/newlist", {
                    params: {
                        id: '213'
                    }
                }).then(res=>{
                   //调用echarts
                   console.log(res )
                   this.initEcharts()
                })
            },
            mounted() {
               
            },
            methods: {
                initEcharts() {
                    let demo = echarts.init(document.getElementById("demo"))
                    var option = {
                                tooltip: {
                                    trigger: 'item',
                                    formatter: '{a} <br/>{b}: {c} ({d}%)'
                                },
                                toolbox: {
                                    feature: {
                                        saveAsImage: {
                                            pixelRatio: 2
                                        }
                                    }
                                },
                                series: [
                                    {
                                        name: '访问来源',
                                        type: 'pie',
                                        radius: ['50%', '70%'],
                                        avoidLabelOverlap: false,
                                        label: {
                                            show: false,
                                            position: 'center'
                                        },
                                        emphasis: {
                                            label: {
                                                show: true,
                                                fontSize: '30',
                                                fontWeight: 'bold'
                                            }
                                        },
                                        labelLine: {
                                            show: false
                                        },
                                        //饼图每个板块之间有间隔
                                        itemStyle: {
                                            borderWidth: 2, //设置border的宽度有多大
                                            borderColor: '#fff',//间隙颜色
                                        },
                                        data: [
                                            {value: 335, name: '直接访问'},
                                            {value: 310, name: '邮件营销'},
                                            {value: 234, name: '联盟广告'},
                                            {value: 135, name: '视频广告'},
                                            {value: 1548, name: '搜索引擎'}
                                        ]
                                    }
                                ]
                    };
                    demo.setOption(option);
                },
    
                // 用于展示和隐藏哈
                handerDemo(type){
                    if(type==1){
                        this.showFlag=false;
                        console.log(1)
                    }else{
                        console.log(1)
                        this.showFlag=true;
                    }
                }
    
            },
        }
    </script>
    
    <style lang="scss" scoped>
    #demo{
         600px;
        height: 400px;
        background: pink;
    }
    </style>
    

    为什么第二次显示不出来

    大家看见了刚刚的图片,我们发现当我点【单个机构】这个按钮的时候。
    ecgarts正确隐藏了。
    但是当我点击多个机构的时候。echarts却没有正确的显示出来。
    大家不觉得很奇怪吗???
    为啥会有这样的想象????
    
    经过本人的大量实践,发现问题的原因,也找到了解决的办法。
    如果装echarts的容器div上使用v-show,或者没有使用v-show
    那么echarts第二次就不能够正确的显示出来
    即使A页面显示echarts;然后去B页面;在返回A页面;
    A页面的echrts的不能够正确的显示出来(这种情况会发生在打包后,在开发环境ok的)
    

    解决办法的地址:https://www.cnblogs.com/IwishIcould/p/15354587.html

    作者:明月人倚楼
    出处:https://www.cnblogs.com/IwishIcould/

    想问问题,打赏了卑微的博主,求求你备注一下的扣扣或者微信;这样我好联系你;(っ•̀ω•́)っ✎⁾⁾!

    如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,或者关注博主,在此感谢!

    万水千山总是情,打赏5毛买辣条行不行,所以如果你心情还比较高兴,也是可以扫码打赏博主(っ•̀ω•́)っ✎⁾⁾!

    想问问题,打赏了卑微的博主,求求你备注一下的扣扣或者微信;这样我好联系你;(っ•̀ω•́)っ✎⁾⁾!

    支付宝
    微信
    本文版权归作者所有,欢迎转载,未经作者同意须保留此段声明,在文章页面明显位置给出原文连接
    如果文中有什么错误,欢迎指出。以免更多的人被误导。
  • 相关阅读:
    [Caffe] ubuntu14.04下使用OpenBLAS加速Caffe
    [CUDA] ubuntu14.04+cuda7.5下安装cudnn7.0
    ubuntu下virtualenv的复制
    SIFT特征学习笔记
    ubuntu14.04+opencv 3.0+python2.7安装及测试
    django之ORM
    django之路由(url)
    性能调优之MySQL篇四:MySQL配置定位以及优化
    性能调优之MySQL篇三:MySQL配置定位以及优化
    性能调优之MySQL篇二:MySQL配置文件My.ini配置文件优化
  • 原文地址:https://www.cnblogs.com/IwishIcould/p/15191517.html
Copyright © 2011-2022 走看看