在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 相关文章推荐
Jquery 点击按钮显示和隐藏层的代码
Jul 25 Javascript
JS实现商品倒计时实现代码
May 03 Javascript
jQuery中.live()方法的用法深入解析
Dec 30 Javascript
判断文档离浏览器顶部的距离的方法
Jan 08 Javascript
类似天猫商品详情随浏览器移动的示例代码
Feb 27 Javascript
javascript运动详解
Jul 06 Javascript
js多功能分页组件layPage使用方法详解
May 19 Javascript
详解JavaScript的内置对象
Dec 07 Javascript
Vue 动态组件与 v-once 指令的实现
Feb 12 Javascript
小程序怎样让wx.navigateBack更好用的方法实现
Nov 01 Javascript
微信小程序wx.request的简单封装
Nov 13 Javascript
详解ES6 中的Object.assign()的用法实例代码
Jan 11 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
php抽象类使用要点与注意事项分析
2015/02/09 PHP
php中preg_match的isU代表什么意思
2015/10/01 PHP
gearman中任务的优先级和返回状态实例分析
2020/02/27 PHP
javascript复制对象使用说明
2011/06/28 Javascript
jquery可见性过滤选择器使用示例
2013/06/24 Javascript
JQUERY实现左侧TIPS滑进滑出效果示例
2013/06/27 Javascript
D3.js 从P元素的创建开始(显示可加载数据)
2014/10/30 Javascript
jQuery插件之jQuery.Form.js用法实例分析(附demo示例源码)
2016/01/04 Javascript
JavaScript中将数组进行合并的基本方法讲解
2016/03/07 Javascript
详解Matlab中 sort 函数用法
2016/03/20 Javascript
基于Jquery插件实现跨域异步上传文件功能
2016/04/26 Javascript
js模态对话框使用方法详解
2017/02/16 Javascript
nodejs根据ip数组在百度地图中进行定位
2017/03/06 NodeJs
基于bootstrap实现多个下拉框同时搜索功能
2017/07/19 Javascript
vue单页应用中如何使用jquery的方法示例
2017/07/27 jQuery
Vue ElementUI之Form表单验证遇到的问题
2017/08/21 Javascript
详解Vue源码之数据的代理访问
2018/12/11 Javascript
Js通过AES加密后PHP用Openssl解密的方法
2019/07/12 Javascript
微信小程序基于movable-view实现滑动删除效果
2020/01/08 Javascript
解决Element中el-date-picker组件不回填的情况
2020/11/07 Javascript
python实现二分查找算法
2017/09/21 Python
python实现指定字符串补全空格、前面填充0的方法
2018/11/16 Python
python执行scp命令拷贝文件及文件夹到远程主机的目录方法
2019/07/08 Python
python实现本地批量ping多个IP的方法示例
2019/08/07 Python
Django自带用户认证系统使用方法解析
2020/11/12 Python
CSS3实现各种图形的示例代码
2016/10/19 HTML / CSS
业务助理岗位职责
2013/11/18 职场文书
社会学专业学生职业规划书
2014/02/07 职场文书
怎么写自荐书范文
2014/02/12 职场文书
农村老人去世追悼词
2015/06/23 职场文书
2019新员工试用期转正工作总结范文
2019/08/21 职场文书
用Python提取PDF表格的方法
2021/04/11 Python
go语言中GOPATH GOROOT的作用和设置方式
2021/05/05 Golang
vue+springboot实现登录验证码
2021/05/27 Vue.js
JavaScript利用html5新方法操作元素类名详解
2021/11/27 Javascript
Win10 heic文件怎么打开 ? Win10 heic文件打开教程
2022/04/06 数码科技