angularf封裝echarts

前言:angular中快速使用echartshtml

在html使用ehart很簡單,你只須要引入文件和按照官方例子按照對應參數配置和數據填充就Ok了,那麼在angular中怎麼使用eharts(能夠使用echarts3),你只須要去看個官方提供的demo,大體知道圖形經過作哪些事構建出來的就行。git

步驟:npm

1.知道大體流程,這裏你能夠官網直接去gitup地址,上面有angular echarts的使用方法的介紹,我三個都看了以爲最三個最容易看懂且代碼也比較少,克隆下來看裏面代碼很快就明白了。gulp

2.引入文件到項目中bootstrap

1)你能夠使用npm i ng-echarts --save-dev,而後在task任務中打包,相應地方require引入。app

2)經過下載js文件外部引入(博主通常將插件都外部引入放在lib目錄中)echarts

你在gitup克隆下來的demo中js文件複製到lib的echarts下,macarons.js是一個主題文件,你須要在官網中的主題文件下載中下載你對應的主題。ide

3.在gulp任務中將引入的文件打包工具

 
 gulp.task('build-lib-js', ['build-clean-third-lib-js'], function () {

    var thirdLibJs = gulp.src([//外部引用js
        './lib/bootstrap/js/bootstrap.min.js',
        './lib/echarts/echarts.min.js',
        './lib/echarts/macarons.js',
    ])
        .pipe(concat('lib.min.js', {newLine: '\r\n'}))
        .pipe(gulp.dest('js'));

    return merge.apply(null, thirdLibJs);
 });
 

 



4.使用方法
1).html模塊
ec-option:echarts中的option

ec-config:其餘參數的配置項 * theme:圖表主題名稱, * event:綁定事件 * dataLoaded:數據是否加載(用於Loading)
<ng-echarts class="col-md-6 echarts" ec-config="lineConfig" ec-option="lineOption"></ng-echarts>
2)自定義組件模塊
 1 angular.module('ng-echarts',[])
 2     .directive('ngEcharts',[function(){
 3         return {
 4             link: function(scope,element,attrs,ctrl){
 5                 function refreshChart(){
 6                     var theme = (scope.config && scope.config.theme)
 7                         ? scope.config.theme : 'default';
 8                     var chart = echarts.init(element[0],theme);
 9                     if(scope.config && scope.config.dataLoaded === false){
10                         chart.showLoading();
11                     }
12 
13                     if(scope.config && scope.config.dataLoaded){
14                         chart.setOption(scope.option);
15                         chart.resize();
16                         chart.hideLoading();
17                     }
18 
19                     if(scope.config && scope.config.event){
20                         if(angular.isArray(scope.config.event)){
21                             angular.forEach(scope.config.event,function(value,key){
22                                 for(var e in value){
23                                     chart.on(e,value[e]);
24                                 }
25                             });
26                         }
27                     }
28                 };
29 
30                 //自定義參數 - config
31                 // event 定義事件
32                 // theme 主題名稱
33                 // dataLoaded 數據是否加載
34 
35                 scope.$watch(
36                     function () { return scope.config; },
37                     function (value) {if (value) {refreshChart();}},
38                     true
39                 );
40 
41                 //圖表原生option
42                 scope.$watch(
43                     function () { return scope.option; },
44                     function (value) {if (value) {refreshChart();}},
45                     true
46                 );
47             },
48             scope:{
49                 option:'=ecOption',
50                 config:'=ecConfig'
51             },
52             restrict:'EA'
53         }
54     }]);

 


3)controller模塊(配置參數和加載數據)
你能夠根據官方例子將數據更改成接口獲取,將配置項根據須要修改參數,參數具體參考
 
.controller('Ctrl1',function($scope,$interval,$timeout){
            function onClick(params){
                console.log(params);
            };
            
            $scope.lineConfig = {
                                theme:'default',//主題
                                event: [{click:onClick}],//觸發事件
                                dataLoaded:true//數據是否加載
                            };
    
            $scope.lineOption = {
                title : {//標題
                    text: '將來一週氣溫變化(5秒後自動輪詢)',
                    subtext: '純屬虛構'
                },
                tooltip : {//提示框 座標軸觸發
                    trigger: 'axis'
                },
                legend: {//圖例組件
                    data:['最高氣溫','最低氣溫']
                },
                toolbox: {//工具箱
                    show : true,
                    feature : {
                        mark : {show: true},
                        dataView : {show: true, readOnly: false},//數據視圖(可更改成本身的樣式)
                        magicType : {show: true, type: ['line', 'bar']},//視圖切換
                        restore : {show: true},//還原
                        saveAsImage : {show: true}//存爲圖片
                    }
                },
                calculable : true,
                xAxis : [//x軸
                    {
                        type : 'category',
                        boundaryGap : false,
                        data : ['週一','週二','週三','週四','週五','週六','週日']
                    }
                ],
                yAxis : [//y軸
                    {
                        type : 'value',
                        axisLabel : {
                            formatter: '{value} °C'
                        }
                    }
                ],
                series : [//數據
                    {
                        name:'最高氣溫',
                        type:'line',
                        data:[11, 11, 15, 13, 12, 13, 10],
                        markPoint : {
                            data : [
                                {type : 'max', name: '最大值'},
                                {type : 'min', name: '最小值'}
                            ]
                        },
                        markLine : {
                            data : [
                                {type : 'average', name: '平均值'}
                            ]
                        }
                    },
                    {
                        name:'最低氣溫',
                        type:'line',
                        data:[1, -2, 2, 5, 3, 2, 0],
                        markPoint : {
                            data : [
                                {name : '周最低', value : -2, xAxis: 1, yAxis: -1.5}
                            ]
                        },
                        markLine : {
                            data : [
                                {type : 'average', name : '平均值'}
                            ]
                        }
                    }
                ]
            };
        })
 

 

 
  -----原創文章,©版權全部,轉載請註明標明出處:http://www.cnblogs.com/doinbean 
相關文章
相關標籤/搜索