javascript - 未捕获的类型错误:mychart.update 不是函数
问题描述
我正在构建外部按钮来切换来自chartjs的数据的可见性,但它只会在屏幕尺寸发生变化时起作用。所以,我发现可以使用 mychart.update() 来解决问题。但它让我得到了我在标题中陈述的错误。
这是我的图表:
var myRadarChart = {
type: 'radar',
data: {
labels: lbl,
datasets: [
{
label: 'Houses',
data: yh,
backgroundColor:['rgba(0, 123, 255, 0.5)'],
borderColor: ['rgba(0, 123, 255, 0.8)'],
hidden:false
},
{
label: 'Apartments',
data: ya,
backgroundColor:['rgba(40,167,69, 0.5)'],
borderColor: ['rgba(40,167,69, 0.8)'],
hidden:false
},
{
label: 'Rooms',
data: yr,
backgroundColor:['rgba(218, 17, 61,0.5)'],
borderColor: ['rgba(218,17,61,0.8)'],
hidden:false
}
]
},
options: {
legend:{
display:true,
onHover: function(event, legendItem) {
document.getElementById("myRadarChart").style.cursor = 'pointer';},
},
maintainAspectRatio:false,
scale: {
angleLines: {
display: true
},
ticks: {
suggestedMin: 0,
suggestedMax: 0
}
}
}
};
var ctx = document.getElementById('myRadarChart').getContext('2d');
new Chart(ctx, myRadarChart);
而我试图做的是:
//Onclick
function getData(dontHide){
switch(dontHide){
case 0:
myRadarChart.data.datasets[0].hidden=false;
myRadarChart.data.datasets[1].hidden=true;
myRadarChart.data.datasets[2].hidden=true;
myRadarChart.update();
break;
case 1:
myRadarChart.data.datasets[0].hidden=true;
myRadarChart.data.datasets[1].hidden=false;
myRadarChart.data.datasets[2].hidden=true;
myRadarChart.update();
break;
case 2:
myRadarChart.data.datasets[0].hidden=true;
myRadarChart.data.datasets[1].hidden=true;
myRadarChart.data.datasets[2].hidden=false;
myRadarChart.update();
break;
}
}
还是有其他方法可以执行此类操作?
解决方案
您的问题是您试图在图形的配置.update()
对象上调用该方法,而不是您的实际图形实例。如您所见,它只是一个对象,它没有调用方法。但是,您在执行时创建的图表确实为您提供了方法。myRadarChart
update()
new Chart(ctx, myRadarChart);
.update()
要解决您的问题,您需要首先将图表的实例存储在某处:
var radarGraph = new Chart(ctx, myRadarChart);
然后更新图形的数据(而不是直接更新您的配置对象):
radarGraph.data.datasets[0].hidden = false;
...
radarGraph
然后在您的对象上调用更新方法:
radarGraph.update();
推荐阅读
- python - 如何使用 matplotlib 将 3D numpy 数组可视化为 GIF?
- dart - 如果我们在 dart 中使用 const 构造函数创建对象,那么该对象是在编译时创建的吗?
- javascript - 暗黑破坏神 2 - 改进验证符文配方的算法
- python - 使用 Post 方法的 Python requests.request 下载内容不正确的 zip 文件
- tapkey - 在 tapkey 端点上使用 $filter
- javascript - 显示当前用户在不同国家的时间
- python - 将不同大小数组的数组转换为 numpy 数组
- haskell - 将 macOS 更新到 Monterey 后无法为 Haskell 运行 QuickCheck
- java - slide.createTable() 在使用 org.apache.poi 库创建 ppt 时生成异常
- apache - 在 Apache 上进行重定向所需的最小配置是什么?