【发布时间】:2018-01-08 06:02:10
【问题描述】:
我正在使用 vue.js 和 chart.js 为一些加密投资组合开发一个可视化模块,但目前我遇到了这个问题:
显示空图表,但未呈现任何值。
由于这些值是在图表初始化后动态加载的,我相信图表没有正确更新自身(即使我调用了 .update()),但没有显示任何错误。
我将 chart.js 渲染包装在一个 vue 组件中:
Vue.component('portfolioValues', {
template: '<canvas width="400" height="200"></canvas>',
data: function() {
return {
portfolio_value: [],
portfolio_labels: [],
chart: null,
}
},
methods: {
load_portfolio_value_local: function() {
values = [];
labels = []
local_data.forEach(element => {
values.push(element.total_usd);
labels.push(moment(element.timestamp, 'X'));
});
this.portfolio_value = values;
this.portfolio_labels = labels;
this.chart.update();
},
render_chart: function() {
this.chart = new Chart(this.$el, {
type: 'line',
data: {
labels: this.portfolio_labels,
datasets: [{
label: "Portfolio Value",
data: this.portfolio_value,
}]
},
options: {
scales: {
xAxes: [{
type: 'time',
distribution: 'linear',
}]
}
}
});
}
},
mounted: function() {
this.render_chart();
this.load_portfolio_value_local();
}
});
出于演示目的,我只是在本地添加了一些数据,如下所示:
local_data = [{
"timestamp": 1515102737,
"total_btc": 0.102627448096786,
"total_usd": 1539.41274772627
}, {
"timestamp": 1515102871,
"total_btc": 0.102636926127186,
"total_usd": 1538.52649627725
}, {
"timestamp": 1515103588,
"total_btc": 0.102627448096786,
"total_usd": 1532.33042753311
}
]
这里是完整的演示代码:https://codepen.io/perelin/pen/mppbxV
任何想法为什么没有数据被渲染?谢谢!
【问题讨论】:
标签: javascript vue.js chart.js