我试图先创建图表,然后再将数据设置为图表。现在,当我尝试重新设置数据时,它总是给我: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
。
答案 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);