我想在图表没有数据时显示没有数据消息。 这是对的吗?
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时,我没有收到数据消息。
答案 0 :(得分:2)
最简单的方法是使用条件渲染。
假设您正在使用AngularJS(您引用了标记),则可以使用ngIf
指令。如果数据数组为空,则不显示图表。
<canvas id="myChart" ng-if="data != 0"></canvas>
<span ng-if="data == 0">No data</span>
否则,您可以在绘制数据长度之前或之后检查脚本中的解决方法。我建议你this snippet。
根据您的愿望,其他解决方案可能是将绘制的数据调整为接收的数据。
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]
}]
}
}