Ionic2系列——在Ionic2中使用ECharts
在群里看到有人问怎么在Ionic2中集成ECharts来显示图表。当时答应说写个blog,简单写下步骤。
在TypeScript中如果要使用第三方库,必须要有d.ts,也就是定义文件,没有这个文件的话TypeScript是认不出来的,无法编译通过。下面以百度的ECharts图表为例,演示一下使用第三方库的用法。
1、安装ECharts
首先需要使用npm安装ECharts,输入以下命令:
npm install echarts --save
安装完毕后可以看到node_modules目录下多了echarts目录。
因为TypeScript
使用了静态类型,所以我们需要描述将要使用并引入的功能。TypeScript
通过类型定义来描述这些功能。实际上TypeScript
团队已经包含了很多这样的类型定义,也可以通过NPM
进行安装。所以试试看:
npm install @types/echarts --save
还真有,安装完毕后,可以看到node_modules/@types目录下多了一个echarts目录,打开里面的index.d.ts看下,可以看到里面定义了ECharts的接口,有了这个定义文件,TypeScript就可以识别ECharts的方法和参数了。
2、使用ECharts
首先需要在ion-content内放一个div,作为图表的容器:
<!-- 为ECharts准备一个具备大小(宽高)的Dom -->
<div id="main" style="width: 350px;height:300px;" ></div>
打开页面的ts文件,将ECharts引入进来,在头部添加:
import ECharts from 'echarts';
在页面上放一个按钮,把click事件绑定到以下方法:
createCharts() {
var myChart = ECharts.init(document.getElementById('main') as HTMLDivElement);
// 指定图表的配置项和数据
var option = {
title: {
text: 'ECharts 入门示例'
},
tooltip: {},
legend: {
data: ['销量']
},
xAxis: {
data: ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]
},
yAxis: {},
series: [{
name: '销量',
type: 'bar',
data: [5, 20, 36, 10, 10, 20]
}]
}; // 使用刚指定的配置项和数据显示图表。
myChart.setOption(option);
}
代码从ECharts官网抄的,只是示例。
这样点击按钮后就可以生成了。但是有个小问题,如果在不同分辨率的移动设备上图表宽度无法自适应。所以需要再做一点改动。
3、自适应宽度的Directive
在src目录下添加directives目录,添加一个auto-fit-layout.ts文件,输入以下代码:
import { Directive, ElementRef, Renderer } from '@angular/core'; @Directive({
selector: '[my-auto-fit-layout]'
})
export class AutoFitLayout {
constructor(public element: ElementRef, public renderer: Renderer) {
//因为ionic的默认padding宽度是16
renderer.setElementStyle(element.nativeElement, 'width', `${(document.body.clientWidth - 32).toString()}px`);
}
}
使用这个指令时,会获取当前窗口宽度,并设置指定div的宽度。将这个指令应用到图表的容器上:
<!-- 为ECharts准备一个具备大小(宽高)的Dom -->
<div id="main" style="width: 350px;height:300px;" my-auto-fit-layout></div>
这样就可以在生成图表的时候自动适应当前容器的宽度了。
4、其他
如果找不到这个d.ts怎么办呢?也有办法,参考这个地址:
https://yanxiaodi.gitbooks.io/ionic2-guide/content/resources/third-party-libs.html
一种办法是自己写d.ts,也可以直接将第三方库声明出来,但是如果没有详细的d.ts的话就会失去TypeScript强类型的好处。所以一定不要忘了还有tsc --declaration my.ts这个命令,可以把js文件改后缀为ts,用这个命令生成一份d.ts。
Ionic2系列——在Ionic2中使用ECharts的更多相关文章
- Ionic2系列——在Ionic2中使用高德地图
之前讲过了如何在Ionic2中使用第三方库,因为第三方库必须针对TypeScript提供相应的声明文件——即d.ts文件,才能被TypeScript正确识别并编译.好在大多数的第三方库已经有了定义文件 ...
- Ionic2系列——Ionic 2 Guide 官方文档中文版
最近一直没更新博客,业余时间都在翻译Ionic2的文档.之前本来是想写一个入门,后来觉得干脆把官方文档翻译一下算了,因为官方文档就是最好的入门教程.后来越翻译越觉得这个事情确实比较费精力,不知道什么时 ...
- Wabpack系列:在webpack+vue开发环境中使用echarts导致编译文件过大怎么办?
现象,在一个webpack+vue的开发环境中,npm install echarts --save了echarts,然后在vue文件中直接使用 import echarts from 'echart ...
- Vue系列——在vue项目中使用echarts
该示例使用 vue-cli 脚手架搭建 安装echarts依赖 npm install echarts -S 或者使用国内的淘宝镜像安装 npm install -g cnpm --registry= ...
- 接上一篇中记录Echarts进度环使用【不同状态不同进度环颜色及圈内文字】--采用单实例业务进行说明
接上一篇中记录Echarts进度环使用 此处处理不同状态下不同进度环颜色及圈内文字等的相关处理,采用实际案例源码说明 -----------------偶是华丽丽分割线---------------- ...
- 浏览器扩展系列————在WPF中定制WebBrowser快捷菜单
原文:浏览器扩展系列----在WPF中定制WebBrowser快捷菜单 关于如何定制菜单可以参考codeproject上的这篇文章:http://www.codeproject.com/KB/book ...
- 在vue-cli项目中使用echarts
这个示例使用 vue-cli 脚手架搭建 安装echarts依赖 npm install echarts -S 或者使用国内的淘宝镜像: 安装 npm install -g cnpm --regist ...
- 在vue中使用echarts图表
在vue中使用echarts图表 转载请注明出处:https://www.cnblogs.com/wenjunwei/p/9815290.html 安装vue依赖 使用npm npm instal ...
- 在vue中调用echarts中的地图散点图~
首先!当然是在vue中引入echarts! 命令行 npm install echarts --save 在main.js文件中里引入 import echarts from 'ech ...
随机推荐
- 学习ASP.NET Core, 怎能不了解请求处理管道[4]: 应用的入口——Startup
一个ASP.NET Core应用被启动之后就具有了针对请求的处理能力,而这个能力是由管道赋予的,所以应用的启动同时意味着管道的成功构建.由于管道是由注册的服务器和若干中间件构成的,所以应用启动过程中一 ...
- HTML5实现文件断点续传
HTML5的FILE api,有一个slice方法,可以将BLOB对象进行分割.前端通过FileList对象获取到相应的文件,按照指定的分割方式将大文件分段,然后一段一段地传给后端,后端再按顺序一段段 ...
- 使用JavaScript为一张图片设置备选路径
在做网页开发的时候,有时候希望给图片设置一个备选路径,即,当src属性对应的主路径加载失败的时候,图片可以马上切换到备选路径.这样,即使主路径失效了,显示备用路径也不会影响网页的正常体验. 注意到网页 ...
- 如何理解DT将是未来IT的转型之路?
如今的IT面临着内忧外患的挑战. 一方面,企业多多少少都建立了信息化,有些企业或集团甚至会有数几十个分公司,包含直销.代理.零售以及第三方物流等多种业态.越是复杂的业务,信息化建设越困难,比如运用大量 ...
- Android 调用百度地图API
一.到 百度地图开发平台下载SDK http://lbsyun.baidu.com/index.php?title=androidsdk/sdkandev-download 1.点击自定义下载 2.下 ...
- a标签绝对定位,点击区域被图片遮挡(IE下)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 技术笔记:Indy的TIdSMTP改造,解决发送Html和主题截断问题
使用Indy来发邮件坑不少啊,只不过有比没有好吧,使用delphi6这种老工具没办法,只能使用了新一点的Indy版本9,公司限制... 1.邮件包含TIdText和TIdAttachment时会出现T ...
- 舍弃Nunit拥抱Xunit
前言 今天与同事在讨论.Net下测试框架的时候,说到NUnit等大多数测试框架的SetUp以及TearDown方法并不是显得那么完美,所以在公司内部的项目中采用了Xunit框架.那么究竟是什么样的原因 ...
- 全网络最正确的让 Linux 开机进入字符界面的方法及设置 FrameBuffer 分辨率的方法
引言 这个标题有点长,是为了在标题中就把问题说清楚,以便搜索引擎能够把有需要的朋友准确地带到我这里来.目前在网络上,很多关于 Linux 方面的知识是过时的和错误的.我标题中指出的两个知识点就是其中的 ...
- 【说解】在shell中通过mkfifo创建命名管道来控制多个进程并发执行
背景: 工作中有两个异地机房需要传数据,数据全名很规范,在某个目录下命名为统一的前缀加上编号.如/path/from/file.{1..100}.而机房间的专线对单个scp进程的传输速度是有限制的,比 ...