Chart.js (v2.7.2) 似乎为使用时间刻度的轴动态渲染折线图轴标签。这在使用时产生了一个独特的问题update()
更新数据集后的方法。
update()
开始一个结束于的跟踪ChartElement.determineDataLimits
method:
// Convert labels to timestamps
for (i = 0, ilen = chart.data.labels.length; i < ilen; ++i) {
labels.push(parse(chart.data.labels[i], me));
}
因为我没有labels
我的元素data
-- 每个数据集都有自己的标签,并且时间尺度标签是自动生成的 -- 上面的代码有效地阻止了我使用update()
在我的时间刻度图表上。
我尝试过组合destroy()
/clear()
and render()
尝试解决这个问题,但这会导致更奇怪的异常Chart.transition
:
transition: function(easingValue) {
var me = this;
for (var i = 0, ilen = (me.data.datasets || []).length; i < ilen; ++i) {
if (me.isDatasetVisible(i)) {
me.getDatasetMeta(i).controller.transition(easingValue);
}
}
me.tooltip.transition(easingValue);
},
显然,me.getDatasetMeta(i).controller
未定义。
我正在尝试做的是以下内容:
1)渲染一个类似于官方示例的时间刻度折线图:http://www.chartjs.org/samples/latest/scales/time/line-point-data.html http://www.chartjs.org/samples/latest/scales/time/line-point-data.html
2)通过AJAX检索全新的数据集
3)重新渲染折线图。
似乎是new Chart(context, config)
构造函数是实际渲染时间刻度折线图的唯一方法。
我的问题有两个部分:
A)这是一个错误,还是我做错了什么?
B) 无论 (A) 的答案如何,是否有其他方法可以在不完全删除图表及其数据并在其位置渲染新图表的情况下执行此操作?