只为成功找方法,不为失败找理由。

博客园 首页 新随笔 联系 订阅 管理

echarts是开源的画图工具,在angular框架中引入echarts不能直接使用。需要新建一个directive

//echarts基本参数  
    app.factory('$echartsConfig', function () {  
        return {  
  
            tooltip : {  
                trigger: 'axis'  
            },  
            legend: {  
                data:[]  
            },  
            xAxis : [  
                {  
                    type : 'category',  
                    boundaryGap : false,  
                     data : [1,2,3,4,5,6]  
                }  
            ],  
            yAxis : [  
                {  
                    type : 'value'  
                     
                }  
            ],  
            series : [   
               {  
                    name:'',  
                    type:'line',  
                    data:[0,0,0,0,0,0],  
                }  
            ]  
        };  
    })  
    //echarts directive  
    .directive('echarts', ['$echartsConfig','$window', function ($echartsConfig,$window) {  
        return {  
            restrict: 'A',  
            link: function (scope, element, attrs) {  
                if (!scope.$echartsInstance)  
                    scope.$echartsInstance = {};  
                scope.$watch(attrs.echarts, function () {  
                    var option=angular.extend({},$echartsConfig,scope.$eval(attrs.echarts));  
                    if (option.id) {  
                        scope.$echartsInstance[option.id] = echarts.init(element[0]);  
                        scope.$echartsInstance[option.id].setOption(option);  
                    } else {  
                        scope.$echartsInstance = echarts.init(element[0]);  
                        scope.$echartsInstance.setOption(option);  
                    }  
                });  
                $window.onresize = function() {  
                    if(scope.$echartsInstance.searchTimeOption)  
                        scope.$echartsInstance.searchTimeOption.resize();  
                    if(scope.$echartsInstance.searchCostOption)  
                        scope.$echartsInstance.searchCostOption.resize();  
                    if(scope.$echartsInstance.searchNumOption)  
                        scope.$echartsInstance.searchNumOption.resize();  
                     
                };  
            }  
        };  
    }])  

  html代码

<div class="panel-body" style="height:320px" echarts="searchCostOption" id="searchCost"></div>  

每次  获取数据  加 到$echartsConfig 当中 ,并重新 初始化 echarts.init()    searchCost   

在页面中需要先加载数据  后显示 echarts  否则会发生不生效 的问题


posted on 2016-11-16 15:22  诗意的活着  阅读(3069)  评论(0编辑  收藏  举报