在vue中通过axios异步使用echarts的方法


Posted in Javascript onJanuary 13, 2018

现实的工作中, 数据不可能是像之前的demo演示的那样把数据写死的. 所有的数据都应该通过发送请求进行获取, 所以, 这篇文章, 我将在Vue项目中使用Echarts: 在Vue中引入Echarts中的数据提取出来, 放入到static/data.json文件中,请求该文件获取数据。

一、 实现异步加载数据

(一)引入vue-resource

通过npm下载axios

//命令行中输入
npm install axios --save

在main.js中引入axios并注册

// main.js
import http from './http'
Vue.prototype.$http = http //挂载到原型上

(二)设置data.json

将该柱状图的没有数据的option抽取到data.json中, 代码如下:

{
 "title": { "text": "简单饼状图" },
 "tooltip": {},
 "xAxis": {
  "data": ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"],
  "name": "产品"
 },
 "yAxis": {},
 "series": [{
  "name": "销量",
  "type": "bar",
  "data": [5, 20, 36, 10, 10, 20],
  "itemStyle": { 
   "normal": {
    "color": "hotpink"
   }
  }
 }]
}

(三)在async-bar-chart.vue中请求数据

  1. 从aysnc-barChart-option.js中引入option
  2. 在methods中添加drawBarChart()方法
  3. 在mounted()钩子函数中调用drawBarChart()

代码如下:

<template>
 <div id="myChart" :style="{width: '800px', height: '400px'}"></div>
</template>

<script>
 export default {
 name: 'echarts',
 data() {
  return {
  msg: 'Welcome to Your Vue.js App',
  goods: {}
  }
 },
 mounted() {
  this.drawLine();
 },
 created() {
  this.$http.get('./static/dat.json').then(res => {
  const data = res.data;
  this.goods = data
  console.log(this.goods);
  console.log(Array.from(this.goods.xAxis.data));
  })
 },
 methods: {
  drawLine() {
  // 基于准备好的dom,初始化echarts实例
  let myChart = this.$echarts.init(document.getElementById('myChart'))
  // 绘制图表
  myChart.setOption({
   title: {}, //{text: '异步数据加载示例'},
   tooltip: {},
   xAxis: {
   data: [] //["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
   },
   yAxis: {},
   series: [{
   name: '销量',
   type: 'bar',
   data: [] //[5, 20, 36, 10, 10, 20]
   }]
  });
  this.$http.get("./static/dat.json") .then((res) => {
   const data = res.data;
   const list = data.series.map(good=>{
     let list = good.data;
     return [...list]
    })
    console.log(list);
    console.log(Array.from(...list));
   myChart.setOption({
    title: data.title,
    xAxis: [{
    data: data.xAxis.data
    }],
    series: [{
    name: '销量',
    type: 'bar',
    data: Array.from(...list) //[5, 20, 36, 10, 10, 20]
    }]
   });
   })
  }
 }
 }
</script>

在vue中通过axios异步使用echarts的方法

二. 添加加载动画

如果数据加载时间较长,一个空的坐标轴放在画布上也会让用户觉得是不是产生 bug 了,因此需要一个 loading 的动画来提示用户数据正在加载。

ECharts 默认有提供了一个简单的加载动画。只需要调用 showLoading 方法显示。数据加载完成后再调用 hideLoading 方法隐藏加载动画。

在drawLine()方法中添加showLoading()和hideLoading(), 代码如下:

methods: {
  drawLine() {
  // 基于准备好的dom,初始化echarts实例
  let myChart = this.$echarts.init(document.getElementById('myChart'))
  // 绘制图表
  myChart.setOption({
   title: {}, //{text: '异步数据加载示例'},
   tooltip: {},
   xAxis: {
   data: [] //["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
   },
   yAxis: {},
   series: [{
   name: '销量',
   type: 'bar',
   data: [] //[5, 20, 36, 10, 10, 20]
   }]
  });
  //显示加载动画
  myChart.showLoading();

  this.$http.get("./static/dat.json").then((res) => {
   setTimeout(() => { //未来让加载动画效果明显,这里加入了setTimeout,实现3s延时
   const data = res.data;
   const list = data.series.map(good => {
    let list = good.data;
    return [...list]
   })
   console.log(list);
   console.log(Array.from(...list));
   myChart.hideLoading(); //隐藏加载动画
   myChart.setOption({
    title: data.title,
    xAxis: [{
    data: data.xAxis.data
    }],
    series: [{
    name: '销量',
    type: 'bar',
    data: Array.from(...list) //[5, 20, 36, 10, 10, 20]
    }]
   });
   }, 3000)
  })
  }
 }

在vue中通过axios异步使用echarts的方法

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js 多浏览器分别判断代码
Apr 01 Javascript
jQuery Tab插件 用于在Tab中显示iframe,附源码和详细说明
Jun 27 Javascript
jQuery插件jPaginate实现无刷新分页
May 04 Javascript
javascript常用函数(2)
Nov 05 Javascript
纯js实现手风琴效果代码
Apr 17 Javascript
利用angularjs1.4制作的简易滑动门效果
Feb 28 Javascript
微信小程序引用公共js里的方法的实例详解
Aug 17 Javascript
了解Javascript中函数作为对象的魅力
Jun 19 Javascript
react结合bootstrap实现评论功能
May 30 Javascript
vue实现移动端H5数字键盘组件使用详解
Aug 25 Javascript
详解JavaScript 中的批处理和缓存
Nov 19 Javascript
js中实现继承的五种方法
Jan 25 Javascript
详解基于vue-cli配置移动端自适应
Jan 13 #Javascript
javascript用rem来做响应式开发
Jan 13 #Javascript
深入理解ES6之数据解构的用法
Jan 13 #Javascript
详解ES6语法之可迭代协议和迭代器协议
Jan 13 #Javascript
详解如何在React组件“外”使用父组件的Props
Jan 12 #Javascript
vue使用element-ui的el-input监听不了回车事件的解决方法
Jan 12 #Javascript
微信小程序实现的涂鸦功能示例【附源码下载】
Jan 12 #Javascript
You might like
linux使用crontab实现PHP执行计划定时任务
2014/05/10 PHP
php使用Jpgraph绘制3D饼状图的方法
2015/06/10 PHP
php实现通过cookie换肤的方法
2015/07/13 PHP
PHP中使用array函数新建一个数组
2015/11/19 PHP
innerhtml用法 innertext用法 以及innerHTML与innertext的区别
2009/10/26 Javascript
深入理解Javascript动态方法调用与参数修改的问题
2013/12/10 Javascript
浅谈Javascript中深复制
2014/12/01 Javascript
jquery实现二级导航下拉菜单效果
2015/12/18 Javascript
清除输入框内的空格
2016/12/21 Javascript
ES6中的箭头函数实例详解
2017/04/06 Javascript
JavaScript该如何学习 怎样轻松学习JavaScript
2017/06/12 Javascript
AngularJS实现的2048小游戏功能【附源码下载】
2018/01/03 Javascript
使用JS代码实现俄罗斯方块游戏
2018/08/03 Javascript
JS实现字符串翻转的方法分析
2018/08/31 Javascript
利用原生的JavaScript实现简单拼图游戏
2018/11/18 Javascript
微信小程序时间控件picker view使用详解
2018/12/28 Javascript
微信小程序实现watch监听
2020/06/04 Javascript
Echarts.js无法引入问题解决方案
2020/10/30 Javascript
windows下安装python paramiko模块的代码
2013/02/10 Python
python实现每次处理一个字符的三种方法
2014/10/09 Python
python TKinter获取文本框内容的方法
2018/10/11 Python
Python编写合并字典并实现敏感目录的小脚本
2019/02/26 Python
下载官网python并安装的步骤详解
2019/10/12 Python
python 实现提取log文件中的关键句子,并进行统计分析
2019/12/24 Python
浅谈html5 响应式布局
2014/12/24 HTML / CSS
德国大型的家具商店:Pharao24.de
2016/10/02 全球购物
戴森西班牙官网:Dyson西班牙
2020/02/04 全球购物
美国最大的在线生存商店:Survival Frog
2020/12/13 全球购物
初入社会应届生求职信
2013/11/18 职场文书
十岁生日同学答谢词
2014/01/19 职场文书
入党积极分子学习两会心得体会范文
2014/03/17 职场文书
班主任与学生安全责任书
2014/07/25 职场文书
离婚协议书的书写要求
2014/09/17 职场文书
学校党委副书记个人对照检查材料思想汇报
2014/09/28 职场文书
干部考察材料范文
2014/12/24 职场文书
Vue3.0中Ref与Reactive的区别示例详析
2021/07/07 Vue.js