$ npm install echarts -s
// 引入echarts
import echarts from 'echarts'
Vue.prototype.$echarts = echarts
export default {
data () {
return {}
},
mounted(){
this.drawLine();
},
methods: {
drawLine(){
//1.设置参数对象
var option = {
title:{
text:'ECharts 数据统计'
},
tooltip:{},
legend:{
data:["A类", "B类"]
},
xAxis:{
data:["衣服","裤子","袜子","鞋子"]
},
yAxis:{},
series:[{
name:'销量',
type:'bar', //bar柱状图,line折线图
data:[500,200,360,100]
}]
};
//2.初始化echarts实例
var myChart = this.$echarts.init(this.$refs.chartbox);
//3.挂载指定图表对象
myChart.setOption(option);
//4.窗口大小改变立马重新渲染自适应
window.addEventListener("resize", function() {
myChart.resize();
});
},
}
}
因为elementui中dialog组件是懒渲染的,需要在open事件里面初始化echarts
<el-col :span="24" :offset="0" :xs="{span:24,offset:0}" @open="open()">
<div ref="chartbox">div>
el-col>
methods: {
open() {
const t = this;
setTimeout(() => {
t.drawLine(); // 执行echarts画图方法
}, 0);
},
}
全局引入会将所有的echarts图表打包,导致体积过大,可以采用按需引入减小项目体积。
子组件:
// 引入基本模板
let echarts = require('echarts/lib/echarts')
// 引入柱状图组件
require('echarts/lib/chart/bar')
// 引入提示框和title组件
require('echarts/lib/component/tooltip')
require('echarts/lib/component/title')
export default {
data () {
return {}
},
mounted(){
this.drawLine();
},
methods: {
drawLine(){
//1.设置参数对象
var option = {
title:{
text:'ECharts 数据统计'
},
tooltip:{},
legend:{
data:["A类", "B类"]
},
xAxis:{
data:["衣服","裤子","袜子","鞋子"]
},
yAxis:{},
series:[{
name:'销量',
type:'bar', //bar柱状图,line折线图
data:[500,200,360,100]
}]
};
//2.初始化echarts实例,子组件按需引入不用this.$echarts,直接echarts调用
var myChart = echarts.init(this.$refs.chartbox);
//3.挂载指定图表对象
myChart.setOption(option);
//4.窗口大小改变立马重新渲染自适应
window.addEventListener("resize", function() {
myChart.resize();
});
},
}
}