ehcart是百度做的数据图表,基于原生js。接口和配置都写的很好很易读,还可以用于商用。

下面正题

用原生js的话,引入echarts.js

无论是图表的样式设置,图表渲染,数据填充都是基于echart对象的option的,官网给出使用方法:

var dom = document.getElementById('intro-chart');
var chart = echarts.init(dom); chart.setOption({
backgroundColor: '#08263a',
title: {
text: 'ECharts Example',
textStyle: {
color: '#b1cfa5',
fontSize: 18
},
left: 'center',
top: 25
},
xAxis: {
show: false,
data: ...
},
...
series: [{
type: 'bar',
data: ...,
itemStyle: {
normal: {
barBorderRadius: 5,
shadowBlur: 10,
shadowColor: '#111'
}
},
...
}]
});

  使用angular配置其实只要给ng对象绑定$scope里不同图表的option就行,html像这样:

<div e-chart e-data="option1"></div>
<div e-chart e-data="option2"></div>
<div e-chart e-data="option3"></div>

  在对用controller里面声明一下option,你可以直接去官网复制,这里就只配置一个tooltips:

$scope.option1 = {
tooltip: {
trigger: 'axis'
},
series: [这里是数据]
};

  接下来就是我们的directive

app.directive('eChart', function($http, $window) {
function link($scope, element, attrs) {
var myChart = echarts.init(element[0]);
$scope.$watch(attrs['eData'], function() {
var option = $scope.$eval(attrs.eData);
if (angular.isObject(option)) {
myChart.setOption(option);
}
}, true);
$scope.getDom = function() {
return {
'height': element[0].offsetHeight,
'width': element[0].offsetWidth
};
};
$scope.$watch($scope.getDom, function() {
// resize echarts图表
myChart.resize();
}, true);
}
return {
restrict: 'A',
link: link
};
});

  先echarts.init(element[0])将图表初始化在准备好的dom上,

  绘制图表直接调用echart的API去setOption,然后就是两个watch啦,最重要的是$scope.$watch(attrs['eData'],当option里的配置或者数据变化的时候,绘制图表

  而$scope.$watch($scope.getDom为了响应式准备的,当dom的width或者height变化的时候调用api里的resize()方法就可以了。

  当然如果还有其他你的需要,直接写 watch 或者 watch收集 就可以了

Echart的angularjs封装的更多相关文章

  1. angularjs封装bootstrap官网的时间插件datetimepicker

    背景:angular与jquery类库的协作 第三方类库中,不得不提的是大名鼎鼎的jquery,现在基本上已经是国内web开发的必修工具了.它灵活的dom操作,让很多web开发人员欲罢不能.再加上已经 ...

  2. AngularJS封装webupload实现文件夹上传

    百度的webupload没有开放api获取整个文件夹的信息.本文是二次开发webupload实现获取文件夹信息. 指令封装 /** * @license lx.ui.framework v1.0.0 ...

  3. Angularjs: 封装layDate指令

    [摘要]由于业务需要,将bootstrap-datetimepicker改成了layDate. layDate是一个较成熟且便于操作的jQuery日期插件,支持同一个视图内范围选择.封装成一个指令在多 ...

  4. AngularJS封装UEditor

    <!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8& ...

  5. AngularJS指令封装高德地图组件

    1 概述 公司移动门户原来是基于AngularJS指令封装的百度地图组件,用于签到.签退.定位等功能,在使用过程中发现百度地图频繁的弹出广告,所以打算重新引用其它地图组件,最后决定基于AngularJ ...

  6. 百度数据可视化图表套件echart实战

    最近我一直在做数据可视化的前端工作,我用的最多的绘图工具是d3.d3有点像photoshop,功能很强大,例子也很多,但是学习成本也不低,做项目是需要较大人力投入的.3月底由在亚马逊工作的同学介绍下使 ...

  7. angularjs之filter过滤器

    现在公司用ionic,就是基于angularjs封装了一些api用于webapp,最近用的angularjs的filter确实省了很多代码,现在总结一下! ng比较鸡肋的过滤器,这里就一笔带过吧!鸡汤 ...

  8. angularJs:双向数据绑定

    示例1 <!DOCTYPE html> <html ng-app> <head> <meta charset="UTF-8" /> ...

  9. AngularJS的思考

    AngularJS实践 什么是AngularJS AngularJS的核心理念是什么? 在我看来,Angualr的核心思想是:Template + Scope => HTML, Template ...

随机推荐

  1. vim中对文本的选择

    本文主要解说vim中对文本的选择,vim中选择文本分为: (1)选择字符  ----  命令行模式下输入小写v (2)选择行     ----  命令行模式下输入大写V (3)选择块     ---- ...

  2. C# 数据的序列化存取

    1,什么是序列化? 序列化 (Serialization)将对象的状态信息转换为可以存储或传输的形式的过程.在序列化期间,对象将其当前状态写入到临时或持久性存储区.以后,可以通过从存储区中读取或反序列 ...

  3. 【树形贪心】【UVA1267】Network

    重要意义:复习好久没写的邻接表了. Network, Seoul 2007, LA3902 Consider a tree network with n nodes where the interna ...

  4. vnc远程linux服务器黑屏

    本来想尝试用vnc连接到linux服务器上,图形化操作一点东西,不过遇到了困难,记录方便查询. 1,打开vnc 选择Ip和端口,连接上去显示黑屏. 2,于是想到系统原先没有安装图像化桌面.so,  y ...

  5. html标签之meta标签

    1  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />   ...

  6. 【熊猫】POS销售

    select a.itemcode,b.itemname,b.spec,b.unit,b.rprice,sum(a.rqty) rqtyfrom tm_possale_detail a,sys_ite ...

  7. 杭电OJ—— 1084 What Is Your Grade?

    What Is Your Grade? Problem Description “Point, point, life of student!” This is a ballad(歌谣)well kn ...

  8. window.location.href("url") 无法在chrome和Firefoxz中使用

    今天在js代码中加了一句window.location.href(‘url’)希望实现页面的跳转,IE中可以正常使用,但是Firefox却提示window.location is not a func ...

  9. HTML5的结构学习(1) --- 新增的主体结构元素

      1.article 元素 解释:代表文档.页面和应用程序中独立的.完整的.可以被独自引用的内容. 主要用途:博客中的文章.评论,贴吧中的帖子,或者独立的插件等. article中可以包含多种元素例 ...

  10. CENTOS 挂载硬盘

    查看物理卷:pvs 查看卷组:vgs 列出分区:lvs 查看磁盘:ll /dev/disk/by-path/ 扫描 LVM 找到 VG vgscan centos 下 mount: unknown f ...