vue使用echarts简单教程(错误:Error in mounted hook: “TypeError: Cannot read property ‘getAtrribute’ of undef)

1.安装依赖

npm install echarts -S

2.在main.js中引入

import echarts from 'echarts'
Vue.prototype.$echarts = echarts

3.在组件中使用(报错主要是在渲染的时候没有获取到dom元素,解决方法mounted中)

html标签,一定要设置宽高

<div ref="activity" style="width:100%;height:285px"></div> 




定义一个初始化的方法中写

echartsInit(){
    let activity = this.$echarts.init(this.$refs.activity)
    activity.setOption(this.activityData)
    this.activity = activity
}



在mounted中调用,确保activity需要展示的标签渲染出来

mounted () {
    this.$nextTick(()=>{
      setTimeout(() => {
        this.echartsInit()
      });
    })
  }

data中写入activityData的数据

activityData:{
        title : { 
          text: '活跃度',
          textStyle:{
            color:'white',
            fontSize:'18px'
          },
          x:'15px', //标题的位置
          y:'10px'
        },
        color: ['#3398DB','#67c23a','#e6a23c'], //三组数据对应的颜色
        toolbox: {
          show : true,
          feature : {
            restore : {show: true}, //还原工具
          },
          top:5, //工具栏的位置
          right:15,
          iconStyle:{
            borderColor:'white'
          }
        },
        grid:{ //图标位于整个canvas画布的位置
          x:50,
          y:50,
          x2:30,
          y2:25
        },
        legend: { //多组数据切换,是否显示
          data:[
            {
              name:'数据一',
              textStyle:{
                color:'#3398DB'
              }
            },{
              name:'数据二',
              textStyle:{
                color:'#67c23a'
              }
            },{
              name:'数据三',
              textStyle:{
                color:'#e6a23c'
              }
            }
          ],
          y:'10px'
        }, 
        xAxis : [
          {
            type : 'category',
            data : [], //横坐标数据,后台返回
            axisLabel:{
              color:'white'
            }
          }
        ],
        yAxis : [
          {
            type : 'value',
            axisLabel:{
              color:'white'
            }
          }
        ],
        series: [{ 
          name:'数据一',
          data: [],  //后台返回
          type: 'bar',
          barCategoryGap:'30%',
        },{
          name:'数据二',
          data: [], //后台返回
          type: 'bar',
          barCategoryGap:'30%',
        },{
          name:'数据三',
          data: [], //后台返回的数据是纵坐标的值
          type: 'bar',
          barCategoryGap:'30%',//柱状图各组数据间的距离
        }
        ]
      }

4.数据改变后,重绘canvas,在watch中进行深度监听

watch:{
    activityData:{
      deep:true,
      handler(newValue,oldValue){
        this.activity.setOption(newValue)
      }
    }
}

详细配置

https://echarts.apache.org/v4/zh/option.html#title

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Vue中,当出现"TypeError: Cannot read properties of undefined"的错误时,往往是因为访问了一个未定义或空值的属性。根据你提供的引用内容,这个错误可能与你的代码中的一个名为'rotation'的属性有关。根据你提供的错误信息,错误出现在mounted钩子函数中。有两种可能的解决方案: 1. 检查代码中是否正确定义了名为'rotation'的属性。确保该属性在mounted钩子函数中被正确地初始化或赋值。你可以使用Vue Devtools来检查组件的数据和属性是否正确。 2. 另一种可能的解决方案是使用Vue的nextTick方法来确保DOM已经更新后再使用属性。根据你提供的引用内容,可以尝试在调用emit函数之前添加this.$nextTick方法,以确保在DOM更新后再触发事件。示例代码如下: ```javascript this.$nextTick(function () { eventBus.$emit('msg', route); }); ``` 请注意,根据你提供的引用内容,在使用eventBus时,你需要在main.js文件中添加Vue.prototype.$bus = new Vue(),以确保正确创建eventBus实例。 总结起来,要解决"TypeError: Cannot read properties of undefined"错误,你需要检查并确保你访问的属性存在且已经正确初始化,同时可以使用Vue的nextTick方法来确保在DOM更新后再使用属性。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [[Vue warn]: Error in created hook: “TypeError: Cannot read properties of undefined (reading ‘$on...](https://blog.csdn.net/Youweretrouble/article/details/129189556)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [[Vue warn]: Error in mounted hook: “TypeError: Cannot read properties of undefined (reading ‘$on...](https://blog.csdn.net/qq_45803094/article/details/126476879)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值