现实的工作中, 数据不可能是像之前的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中请求数据

从aysnc-barChart-option.js中引入option

在methods中添加drawBarChart()方法

在mounted()钩子函数中调用drawBarChart()

代码如下:

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]

}]

});

})

}

}

}

二. 添加加载动画

如果数据加载时间较长,一个空的坐标轴放在画布上也会让用户觉得是不是产生 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)

})

}

}

axios vue 加载效果动画_在vue中通过axios异步使用echarts相关推荐

  1. axios vue 加载效果动画_vue+axios+element ui 实现全局loading加载示例

    实现全局loading加载 分析需求,我们只需要在请求发起的时候开始loading,响应结束的时候关闭loading,就这么简单 对不对? import axios from 'axios'; imp ...

  2. axios vue 加载效果动画_vue中使用axios拦截器实现数据加载之前的loading动画显示 @劉䔳...

    首先新建一个 loading.vue组件,写loading动画效果 .loader { width: 100%; height: 100%; display: flex; align-items: c ...

  3. nginx加载图片慢_优化vue项目的首屏加载速度

    最近使用vue-cli3构建了一个小型的博客系统,完工之后,build打包出来发现一个chunk-vendors包就有1.1m,部署上去之后,访问的时候,首屏加载非常慢.居然需要21s,体验极差. 这 ...

  4. dom vue 加载完 执行_前端面试题——Vue

    前言 前几天整理了一些 html + css + JavaScript 常见的面试题(https://segmentfault.com/u/youdangde_5c8b208a23f95/articl ...

  5. dom vue 加载完 执行_前端面试题Vue

    前言 前几天整理了一些 html + css + JavaScript 常见的面试题,然后现在也是找了一些在 Vue 方面经常出现的面试题,留给自己查看消化,也分享给有需要的小伙伴. 如果文章中有出现 ...

  6. vue 加载太慢_如何提高Vue项目首页的加载速度

    为何当一个VUE项目过大时,打包之后初次访问首页加载速度会异常的缓慢,是什么原因导致以及如何解决这些问题? 首页打开速度慢的原因 其实浏览器加载一个页面的过程就是通过http协议从服务器端下载项目所需 ...

  7. python 加载动图_在浏览器中使用TensorFlow.js和Python构建机器学习模型(附代码)...

    大数据文摘授权转载自数据派THU 作者:MOHD SANAD ZAKI RIZVI 本文主要介绍了: TensorFlow.js (deeplearn.js)使我们能够在浏览器中构建机器学习和深度学习 ...

  8. idea 找不到或无法加载主类_解决IDEA中Groovy项目no Groovy library is defined的问题

    实验环境 IDEA2019.1.2 Groovy-2.5.8 错误重现 新建了一个Groovy工程,指定了groovy版本,如图 新建了一个简单的Groovy Class,运行,出现如下错误 错误的尝 ...

  9. 网页javascript加载不出_写给初学者的JavaScript异步编程和背后思想

    导读:对于接触JavaScript这门编程语言没有多久的本菜鸡而言,在相当长的一段时间内,我都完全无法理解这门语言中的异步编程,不明白什么叫异步编程以及为什么需要异步编程.为什么顺序执行程序就不行了呢 ...

最新文章

  1. 用cascade删除有约束的表或记录
  2. idea创建maven web项目需要注意的一些细节
  3. hack 入侵 142 主机的过程
  4. C/C++之函数返回值为指针或者是引用时常见错误总结
  5. 带有NetBeans 10的Java EE
  6. 【Python】模块学习之ConfigParser读写配置信息
  7. 为什么我建议每个开发人员都需要学Python?不看会后悔!
  8. python清除实例化类_在Python中,如何尝试(和排除)类的实例化?
  9. 【干货】从数字化洞察新消费趋势看数字化如何赋能企业.pdf(附下载链接)
  10. 联通发送wap push备忘录
  11. 企业微信好友和微信好友的区别
  12. qq红包裂变式引流?QQ群红包裂变吸粉引流
  13. 【shenyu网关学习】1.什么是 Apache ShenYu
  14. raspberrypi连接神经计算棒人脸识别
  15. 一名爱折腾人士的Apps for iPhone分享
  16. 为什么鸿蒙不掉符,教你如何使用鸿蒙符 鸿蒙符的挽歌一波流的逆袭
  17. 嗨,我亲爱的朋友们!心存感恩
  18. 【日记本砸】21.06.11-20 复杂的式子和角标只是一个符号一个标记而已
  19. 如何建立一套简单又高效的研发管理体系
  20. 数据预测算法-指数平滑法-2

热门文章

  1. PHP魔法函数性能分析
  2. 一图看懂py2/py3编码
  3. python实现redis分布式锁
  4. 数据库中查询记录时是否每次只能使用一个索引?
  5. nginx整合php+lua+oracle环境搭建
  6. CSS中display:block、inline、inline-block
  7. PHP算法导出Excel实现字段联动
  8. 用稳压管保护单片机引脚_零基础入门单片机(2)学会控制IO引脚你就入门啦
  9. java通过jxl处理execl空行_jxl操作Excel导入数据库之空行的处理
  10. 编程语言发展的编年史