我想使用复选框从 chart.js 添加和删除数据集。
现在我正在使用这个添加:
var ds1 = {
label: ..
data: .. etc
};
data.datasets.push(ds1);
当我取消选中任何复选框时,它总是删除最后添加的数据集,这不是复选框之一所必需的。
我正在使用 data.datasets.pop(ds1);
在单击复选框时删除。
原文由 Rodrigo Mota 发布,翻译遵循 CC BY-SA 4.0 许可协议
我想使用复选框从 chart.js 添加和删除数据集。
现在我正在使用这个添加:
var ds1 = {
label: ..
data: .. etc
};
data.datasets.push(ds1);
当我取消选中任何复选框时,它总是删除最后添加的数据集,这不是复选框之一所必需的。
我正在使用 data.datasets.pop(ds1);
在单击复选框时删除。
原文由 Rodrigo Mota 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果您查看 ChartJS 的内部对象 chart.data.datasets
,数据集可以通过最初添加数据集时提供的 label
来区分(奇怪的是没有 ID
) :
所以这实际上只是通过 Label 从数组中过滤出一个对象并调用 chart.update();
的问题。
// Filter out and set back into chart.data.datasets
chart.data.datasets = chart.data.datasets.filter(function(obj) {
return (obj.label != targetLabel);
});
// Repaint
chart.update();
原文由 gene b. 发布,翻译遵循 CC BY-SA 4.0 许可协议
13 回答13k 阅读
7 回答2.2k 阅读
3 回答1.4k 阅读✓ 已解决
6 回答1.3k 阅读✓ 已解决
2 回答1.4k 阅读✓ 已解决
3 回答1.4k 阅读✓ 已解决
6 回答1.1k 阅读
如果您使用
data.datasets.pop(ds1)
删除,您将永远无法获得所需的结果。dataset
属性是一个数组,所以我们只关注数组而忽略 Chart.js。第一个问题是
pop()
Arrays 类型的方法不接受参数,因此提供要删除的元素是无关紧要的。Pop()
将始终从数组中删除最后一个元素。要从数组中删除特定元素,您需要使用
splice()
函数。假设
ds1
是您要删除的元素。这将删除数组中从我们找到的索引开始的第 1 条记录
ds1
。