美文网首页
在Vue中将echart封装为可复用组件

在Vue中将echart封装为可复用组件

作者: 怪兽别跑biubiubi | 来源:发表于2019-01-15 20:40 被阅读0次

首先在项目中安装echarts
npm install echarts --save

1.动态设置id。为什么是动态,id是唯一的,这不用多说吧。

<template>
  <div id="pieChart">
    <div :id="echarts" class="echarts" ref="echarts" style="width: 500px;height: 300px;"></div>
  </div>
</template>

2.引入echarts
const echarts = require('echarts')
3.上面说过了id是唯一的,使用echarts.init这个方法来创建一个 ECharts 实例,返回 echartinstance,不能在单个容器上初始化多个 ECharts 实例,因此需要用到Vue的computed属性来解决这个问题

computed: {
    echarts () {
      return 'echarts' + Math.random()*100000
    }
  }

4.因为把它封装成了一个Vue组件,父子组件之间的通信需要用到props这个属性

props: {
    // 接收父组件传递过来的信息
    chartData: {
      type: Object,  //此处可以为Array或者Object或者其它,根据需求来。
      default: ()=>[]
    }
  }

5.封装echarts。

methods: {
    drawChart () {
      const that = this
      let myChart = echarts.init(document.getElementById(that.echarts))
      let option = {
        tooltip: {
          trigger: "item",
          formatter: "{a} <br/>{b} : {c} ({d}%)"
        },
        legend: {
          orient: "horizontal",
          left: "center",
          bottom: 2,
          data: that.chartData.legend
        },
        // #7498f7 蓝色 #eec557 黄色 #f3655d 红色 #44e9a7 绿色
        color: ['#7498f7', 'sandybrown', '#f3655d'],
        series: [
          {
            name: that.chartData.titles,
            type: "pie",
            radius: "55%",
            // 动态获取data
            data: that.chartData.data1,
            itemStyle: {
              emphasis: {
                shadowBlur: 10,
                shadowOffsetX: 0,
                shadowColor: "rgba(0, 0, 0, 0.5)"
              }
            }
          }
        ]
      }
      // 清除画布
      myChart.clear()
      myChart.setOption(option)
      // 在渲染点击事件之前先清除点击事件
      myChart.off('click')
    }
  }

6.在Vue的生命周期mounted执行,并且在this.$nextTick里面执行这个方法,保证承若所有的子组件被挂载、能保证通过获取到组件

mounted () {
    const that = this
    that.$nextTick(()=> {
      console.log(that.chartData)
      that.drawChart()
    })
  }

注意:
在父组件中调用子组件,如果是通过ajax获取的数据,需要在引入组件是判断一下数组或对象是否为空。

<nestingPic :chartData='receivableAccepted' v-if='receivableAccepted.length > 0' />
3.png 2.png

相关文章

  • 在Vue中将echart封装为可复用组件

    首先在项目中安装echartsnpm install echarts --save 1.动态设置id。为什么是动态...

  • Vue组件

    定义 组件化开发指的是:根据封装的思想,把页面上可复用的UI结构封装为组件,从而方便项目的开发和维护。 vue是一...

  • 三篇文章学完Vue(二)

    组件 组件是可复用的vue实例,且带有名字。 1.因为组件为可复用的Vue实例,所以它们与new Vue接收相同的...

  • vue之将echart封装为组件

    最近的新项目里,有大量数据图表类的需求,为了增强代码的复用性,减少冗余,我开始思考如何将echart封装为组件调用...

  • 组件(模块化)

    Component组件是可复用的 Vue实例

  • Vue.js破冰系列-5组件基础(一)

    组件(Component)是可复用的Vue实例,这句话给了我们两个信息,可复用和Vue实例。可复用就是能够重复使用...

  • 2018-09-18 vue第六章

    组件:组件可以扩展 HTML 元素,封装可重用的代码。组件是可复用的 Vue 实例,所以它们与 new Vue 接...

  • 第3章 vue组件开发

    1. 组件开发 在vue中,组件是最重要的组合部分,官方中定义组件为可复用的vue实例,分为全局组件和局部组件。 ...

  • vue-5

    组件(可复用的vue实例) 注册组件必须在Vue实例化之前全局组件(跨vue实例)组件的data选项必须是一个函数...

  • Vue.js入门(三):组件

    Vue官方对组件的定义如下: 组件是可复用的 Vue 实例,且带有一个名字。我们可以在一个通过 new Vue 创...

网友评论

      本文标题:在Vue中将echart封装为可复用组件

      本文链接:https://www.haomeiwen.com/subject/hnhudqtx.html