vue中使用echarts的两种方法

在vue中使用echarts有两种方法

一、第一种方法

1、通过npm获取echarts

npm install echarts --save

2、在vue项目中引入echarts

在main.js中添加下面两行代码

import echarts from 'echarts'

Vue.prototype.$echarts = echarts

注:import echarts from 'echarts'  引入echarts后,不能全局使用echarts,所以通过Vue.prototype将echarts保存为全局变量。原则上$echarts可以为任意变量名。

3、新建Echarts.vue文件

  • 在template中添加一个存放echarts的‘div’容器
  • 添加myEcharts()方法,将官方文档中的script内容复制到myEcharts()中
  • 修改echarts.init()为this.$echarts.init(),因为上面第二部,将echarts保存到全局变量$echarts中。
  • 在mounted中调用myEcharts()方法
//在Echarts.vue文件中
<template>
  <div class="Echarts">
    <div id="main" style="width: 600px;height: 400px;"></div>
  </div>
</template>

<script>
export default {
  name: 'Echarts',
  methods: {
    myEcharts(){
      var myChart = this.$echarts.init(document.getElementById('main'));
      //配置图表
      var option = {
        title: {
          text: 'echarts入门示例',
        },
        tooltip: {},
        legend: {
          data: ['销量']
        },
        xAxis: {
          data: ['衬衫','羊毛衫','雪纺衫','裤子','高跟鞋','袜子']
        },
        yAxis: {},
        series: [{
          name: '销量',
          type: 'bar',
          data: [5,20,36,10,10,20]
        }]
      };
      myChart.setOption(option);
    }
  },
  mounted(){
    this.myEcharts();
  }
}
</script>

<style>

</style>

 注:本例函数中使用ES6写法。mounted(){}等同于mounted:function(){}。myEcharts()方法同理。最后添加进行路由配置。

二、使用vue-echarts

1、先npm安装vue-echarts

npm install echarts vue-echarts

2、除了全量引用echarts,我们还可以采用按需引入的方式

//在main.js中引入


import Echarts from 'vue-echarts'
import 'echarts/lib/chart/line'

Vue.component('chart',Echarts)

3、然后在组件中使用

//hello.vue中

<template>
  <div class="hello">
    <chart ref="chart1" :options="orgOptions" :auto-resize="true"></chart>
  </div>
</template>

<script>
export default {
  name: 'hello',
  data() {
    return {
      orgOptions: {},
    }
  },
  mounted() {
    this.orgOptions = {
      xAxis: {
        type: 'category',
        data: ['Mon','Tue','Wed','Thu','Fri','Sat','Sun']
      },
      yAxis: {
        type: 'value'
      },
      series: [{
        data: [820,932,901,934,1290,1330,1320],
        type: 'line',
        smooth: true
      }]
    }
  }
}
</script>

<style>

</style>

 

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页