目前,我使用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>我的目标是在它目前所处的区域内调整甜甜圈的尺寸。
我知道C3调整了大小,可以传递值,也许我可以在$scope.watch中添加窗口大小并每次调整大小,但我不确定这是否太重。通过阅读文档,我认为C3图形会自动调整大小,但由于它在指令中,我认为它受到了限制。
如有任何建议或建议,将不胜感激。
发布于 2015-12-16 09:04:59
为了研究这个问题,我将您的代码放在一个工作的柱塞中。
由于生成的图表是一个SVG对象,因此自动调整其大小的方法很棘手。不过,我的建议是探讨以下职位:
https://css-tricks.com/scale-svg/
或者堆栈过流上的这个问题
因此,我认为更有效的方法(正如您所说的)是在generate上使用size选项:
var chart = c3.generate({
size: {
height: 200,
width: 200
}...并调整C3 API的大小方法以更新size:
chart.resize({height:100, width:300})https://stackoverflow.com/questions/34294932
复制相似问题