1. 数据问题,不像官方实例所提供的数据直接写在options对应的数据源里,开发中应当是后端接口请求过来的数据,一般来说,会将echarts图标抽成组件的形式,需要的数据源通过父组件传给子组件,但是遇到的问题就是,图表会木有数据的问题(图表会展示出来,但是没有数据,尴尬),这是因为echats实例在dom渲染前没有拿到数据,在子组件中使用watch侦听父组件传过来的数据即可,如果有再挂载dom,这样就做到了页面没数据的问题

2. 图表响应式的问题,因为echarts图表是canvas画布生成的,所以说在创建都没元素的时候就应当指定宽高,但是直接将style属性写死宽高做不到图表的响应式,这时候通过父组件获取到图表的父级宽高传给子组件绑定,然后使用window.onresize() 方法的回调设置响应式图表

父组件:

 1 <template>
2 <div class="home" ref="home">
3 <echarts :widthheight="style" :echartsData="echartsData"></echarts>
4 </div>
5 </template>
6
7 <script>
8 import echarts from "../components/echarts";
9 export default {
10 components: {
11 echarts
12 },
13 data() {
14 return {
15 style: {
16 width: "",
17 height: "250px"
18 },
19 echartsData: {} //图的数据
20 };
21 },
22 created() {
23 this.echartsData = {
24 X: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],
25 Y: [820, 932, 901, 934, 1290, 1330, 1320]
26 };
27 },
28 mounted() {
29 this.style.width = this.$refs["home"].offsetWidth; //获取父元素的宽度
30 }
31 };
32 </script>
33
34 <style>
35 .home {
36 margin: 50px;
37 border: 1px solid grey;
38 height: 300px;
39 }
40 </style>

子组件:

<template>
<div ref="var_echarts" :style="widthheight"></div>
</template> <script>
export default {
props: ["widthheight", "echartsData"],
data() {
return {
myChart: {} //用来保存echarts图这个实例
};
},
watch: {
echartsData: function(newval, oldval) {
if(newval) {
this.drawBar();
}
}
}, mounted() {
this.$nextTick(() => {
this.drawBar();
});
window.onresize = () => {
this.myChart.resize(); //跟对屏幕的宽度变化而变化
};
},
methods: {
drawBar() {
this.myChart = this.$echarts.init(this.$refs.var_echarts);
this.myChart.setOption({
xAxis: {
type: "category",
data: this.echartsData.X //
},
yAxis: {
type: "value"
},
series: [
{
data: this.echartsData.Y, //
type: "line"
}
]
});
}
}
};
</script>

Vue中使用Echarts 脱坑的更多相关文章

  1. 在vue中使用echarts图表

    在vue中使用echarts图表   转载请注明出处:https://www.cnblogs.com/wenjunwei/p/9815290.html 安装vue依赖 使用npm npm instal ...

  2. 在vue中调用echarts中的地图散点图~

    首先!当然是在vue中引入echarts! 命令行  npm install echarts --save 在main.js文件中里引入        import echarts from 'ech ...

  3. Vue中使用ECharts画散点图加均值线与阴影区域

    [本文出自天外归云的博客园] 需求 1. Vue中使用ECharts画散点图 2. 在图中加入加均值线 3. 在图中标注出阴影区域 实现 实现这个需求,要明确两点: 1. 知道如何在vue中使用ech ...

  4. 记录vue中一些有意思的坑

    记录vue中一些有意思的坑 'message' handler took 401ms 在出现这个之前,我一直纠结于 是如何使用vue-router或者不使用它,通过类似的v-if来实现.结果却出现这个 ...

  5. 记录下vue 中引用echarts 出现 "TypeError: Cannot read property 'getAttribute' of undefined"问题

    今天做项目,用echarts展示数据 ,自己测试 先测试 了下.写的代码html: <div ref="myChart" style="height:300px;w ...

  6. vue中使用echarts(vue+vue-cli+axios+jsonp+echarts)

    一.安装echarts: cnpm i echarts -D 二.在vue-cli的main.js文件中引用echarts: import charts from 'echarts' Vue.prot ...

  7. VUE中集成echarts时 getAttribute of null错误

    错误 错误场景一: 错误提示: 在运行Vue项目时出现了上述错误,出现该错误的原因是Echarts的图形容器还未生成就对其进行了初始化所造成的,代码如下: // 基于准备好的dom,初始化echart ...

  8. vue中使用echarts的两种方法

    在vue中使用echarts有两种方法一.第一种方法1.通过npm获取echarts npm install echarts --save 2.在vue项目中引入echarts 在 main.js 中 ...

  9. 在vue中使用Echarts画曲线图(异步加载数据)

    现实的工作中, 数据不可能写死的,所有的数据都应该通过发送请求进行获取. 所以本项目的需求是请求服务器获得二维数组,并生成曲线图.曲线图的横纵坐标均从获得的数据中取得. Echarts官方文档: ht ...

  10. vue中添加echarts

    方法一:全局引入echarts 步骤: 1.全局安装 echarts依赖.        cnpm install echarts -- save 2.引入echarts模块,在Vue项目的main. ...

随机推荐

  1. Selenium常见方法

    1.打开和关闭浏览器  打开浏览器   driver=webdriver.Ie()   driver=webdriver.Chrome()   driver=webdriver.Firefox() ...

  2. Mysql 5.7 内存配置 (未完成)

    innodb_buffer_pool_size = 4024024024 innodb 引擎,用于 缓存数据和索引

  3. 1009.Django模型基础04

    一.数据库数据渲染到模板 二.案例的功能介绍 博客小案例功能介绍: 主页index.html--------------> 展示添加博客和博客列表的文字,实现页面跳转 添加页add.html-- ...

  4. manu check RAID GEM count and Fragment count of local FN>1

    cat MANU_CHK.sh echo "input Chr" read C echo "input Start" read S echo "inp ...

  5. 无法将类 org.example.sh.utils.PageInfo<T>中的构造器 PageInfo应用到给定类型;

    是因为没有在工具类中加入构造器, @Data @NoArgsConstructor @AllArgsConstructor @ToString

  6. 【Python】Python3环境安装

    编译安装 安装依赖 yum install wget gcc make zlib-devel openssl openssl-devel readline-devel wget "https ...

  7. 新搭建的禅道admin忘记密码

    /opt/zbox/run/mysql/mysql -uroot -p 禅道数据库root默认密码123456 MariaDB [(none)]> show databases; +------ ...

  8. 微信开发 回复用户消息 .net C#

    前段时间开发了公司的微信 这里做个知识总结分享下经验,望一起学习..... 感觉后面写个系列的最好了 .... 企业需求: 给指定企业用户发送消息:如考勤信息. 企业通知.个人信息推送等等, /// ...

  9. [imx6ull][nand] uboot烧录固件

    背景 在调试阶段使用nxp的mfg-tools烧录比较麻烦,故考虑使用uboot指令实现固件烧录 烧录方法 //烧写内核 nand erase 0x4000000 0x800000 tftp zIma ...

  10. SpringBoot使用邮件发送

    使用场景: 定时任务报错 消息推送 日志报错提醒 1.导入依赖 <dependency> <groupId>org.springframework.boot</group ...