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. Swift Strings and Characters

    String 是一个有序的字符集合,例如 "hello, world", "albatross".Swift 字符串通过 String 类型来表示,也可以表示为 ...

  2. UGUI实现的虚拟摇杆,可改变摇杆位置

    实现方式主要参考这篇文章:http://www.cnblogs.com/plateFace/p/4687896.html. 主要代码如下: using UnityEngine; using Syste ...

  3. Bestcoder HDU5059 Help him 字符串处理

    Help him Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total S ...

  4. idea maven 无法加载已经安装的模块

    新建了一下maven项目,下面新建了一个模块,某一个模块clean install之后,别的模块虽然使用dependency标签引入了,但是仍然无法使用, 这个时候,应该重新建立一个项目,将原有项目的 ...

  5. RTP InitializeComponent() 报错

    注意xaml中x:Class 是不是相应改了,下面2处标红的部分是否一致. namespace RTP.ToolKits{ /// <summary> /// Interaction lo ...

  6. QJson 的使用

    下载 源码解压 https://github.com/flavio/qjson 复制 src 目录下所有 .h .cpp .hh 文件到项目目录 qjson,pro 文件添加 INCLUDEPATH ...

  7. CSS+DIV实现文字一行内显示,并且过多的文字以点来代替

    有些时候我们在使用CSS+DIV进行排版实现大量的文字的时候,为了页面的美观,这里需要将文字在div中一行显示,并且将过多的文字进行隐藏,以点号进行代替.当鼠标放上面的时候会以title的形式显示所有 ...

  8. c++网络通信(与服务器通信聊天)和c#网络通信

    c++网络通信(有待整理) 链接:http://pan.baidu.com/s/1i3nMLKT 密码:ksi8 c#网络通信(tcp/udp两部分) TCP发送端: using System; us ...

  9. Python第一印象,大法好!

    为了用flask开发web应用,这两天就开始看了一点点Python.还没看到用Python写网站后台的那部分,就被其强大的数据处理能力和语法的灵活性吸引.肯定是我少见多怪,不过看到人家灵活使用Pyth ...

  10. 1207: C.LU的困惑

    题目描述 Master LU 非常喜欢数学,现在有个问题:在二维空间上一共有n个点,LU每连接两个点,就会确定一条直线,对应有一个斜率.现在LU把平面内所有点中任意两点连线,得到的斜率放入一个集合中( ...