当图表无数据时显示无数据消息 [英] Show No data message when chart has no data
问题描述
当图表没有数据时,我试图不显示任何数据消息. 正确吗?
I am trying to show no data message when chart has no data. Is it correct?
var ctx = document.getElementById('mycanvas').getContext('2d');
var chart = new Chart(ctx, {
type: 'doughnut',
data: {
labels: ["aa", "bb", "cc", "dd"],
datasets: [{
label: "My First dataset",
backgroundColor: ['red', 'blue', 'green', 'yello'],
data: data.length ? data: [{ label: "No Data", value: 100 }],
}]
},
options: {
legend: {
position: 'right',
labels: {
boxWidth: 12
}
},
tooltips: { bodyFontSize: 12 }
}
});
当数据长度为0时,我没有收到任何数据消息.
I am not getting No data message when data length is 0.
推荐答案
最简单的方法是使用条件渲染.
Easiest is to use conditional rendering.
假设您使用的是AngularJS(引用了标记),则可以使用ngIf
指令.如果数据数组为空,则不显示图表.
Assuming you're using AngularJS (you referenced tag), you can use ngIf
directive. If data array is empty, then don't display chart.
<canvas id="myChart" ng-if="data != 0"></canvas>
<span ng-if="data == 0">No data</span>
否则,您可以通过在绘制数据长度之前或之后进行检查来在脚本中解决该问题.我建议您此代码段.
Else, you can solve it in your script, by checking before or after draw the data length. I recommend you this snippet.
您希望遵循的其他解决方案可能是使绘制的数据适应接收到的数据.
Other solution following your wish could be to adapt drawn data to received data.
if($scope.requestedLeaveTypeCount.length > 0){
data = {
labels: ["EL", "AL", "PL", "CL"],
datasets: [{
label: "My First dataset",
backgroundColor: ['#F0CB8C', '#A9D5D4', '#E8A3D7', '#CFA3FD'],
data: $scope.requestedLeaveTypeCount,
}]
}
} else {
data = {
labels: ["No data"],
datasets: [{
labels:'No data',
backgroundColor: ['#D3D3D3'],
data: [100]
}]
}
}
https://plnkr.co/edit/QXljAeeM4Ul3Y47EPcbq?p=preview
这篇关于当图表无数据时显示无数据消息的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!