Chart.js无法重新设置数据

时间:2019-07-16 08:50:33

标签: javascript chart.js

我试图先创建图表,然后再将数据设置为图表。现在,当我尝试重新设置数据时,它总是给我:ERROR TypeError: "me.getDatasetMeta(...).controller is null"

所以我首先想到的是我的数据被弄乱了,但是奇怪的是,当我在其中包含数据的情况下创建图表时,一切正常。

这是我创建图表的方式:

this._graph = new Chart(ctx, {
  type: 'line',
  data: {
    labels: [],
    datasets: []
  },
  options: {}
});

在这里我将其重新分配:

this._graph.data.labels = Object.keys(data);
this._graph.data.datasets = dataSets;

我的数据如下:

Object.keys => Array(6) [ "1", "2", "3", "4", "5", "6" ]

dataSets => (6) […]
​
0: {…}
  _meta: Object [ {…} ]
  data: (4) […]
    0: 157
​​​    1: 157
​​​    2: 157
​​​    3: 157
​​    length: 4
​​​    <prototype>: Array []
​​  label: "1"
​​  <prototype>: Object { … }
​1: Object { label: "2", data: (4) […], _meta: Object(1) }
​2: Object { label: "3", data: (4) […], _meta: Object(1) }
​3: Object { label: "4", data: (4) […], _meta: Object(1) }
​4: Object { label: "5", data: (4) […], _meta: Object(1) }
​5: Object { label: "6", data: (4) […], _meta: Object(1) }
​length: 6
​<prototype>: Array []

也许我也应该让您知道我正在设计一个有角度的应用程序,但这不重要...我想吗?

编辑:

是的,我检查了是否定义了ctx

2 个答案:

答案 0 :(得分:0)

如果要更新图表,则有一种更新方法this.chart.update();

this._graph.data.labels = Object.keys(data);
this._graph.data.datasets = dataSets;
this._graph.update();

答案 1 :(得分:0)

我正在使用 vuejs 并遇到相同的错误,我的解决方案只是先调用数据集,然后调用 renderChart,所以试试这个:

this._graph.data.datasets = dataSets;
this._graph.data.labels = Object.keys(data);