我目前有一个简单的圆环图,我用C3创建。我把它放在一个指令中,一切正常。
我的指示如下:
angular.module('dashboardApp').directive('donutChart',function(){
function link(scope,element,attr){
scope.$watch(function() {
return scope.data;
},
function() {
if(scope.data !== undefined){
var chart = c3.generate({
bindto: 'donut-chart',
data:{
columns : scope.data,
type: 'donut'
},
donut:{
label : {
format: function(value,ratio,id){
return value;
},
}
},
tooltip:{
position: function(data,width,height,element){
return {top:-180,left:300}
}
},
});
}
}
)};
return {
restrict: 'EA',
scope: {
data: '='
},
link : link
};
});
在HTML中我有以下内容:
<div class="row">
<div class="donut-route" >
<donut-chart data='routes'></donut-chart>
</div>
</div>
我的目标是让甜甜圈在其目前所在的div中重新调整大小。
我知道C3调整大小,我可以传递值,也许我可以将窗口大小添加到 $ scope.watch 并每次调整大小但我不确定是否会太沉重。从阅读文档中我认为C3图表会自动重新调整大小,但由于它在指令中我认为它受到限制。
非常感谢任何指示或建议。
答案 0 :(得分:3)
我将您的代码置于工作Plunker中以便调查问题。
由于生成的图表是 SVG 对象,因此CSS自动调整大小的方法很棘手。不过我的建议是探讨以下帖子:
https://css-tricks.com/scale-svg/
上的这个问题所以我认为更有效的方法(如你所说)是在generate上使用size选项:
var chart = c3.generate({
size: {
height: 200,
width: 200
}...
并调整C3 API的方法以更新大小:
chart.resize({height:100, width:300})