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 否則會發生不生效 的問題
