[英]Chart.js chart in vue.js component does not update
我正在使用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
为什么没有数据呈现任何想法? 谢谢!
您在这里遇到的问题是vuejs如何处理其data
。
如果您这样使用它:
local_data.forEach(element => {
this.portfolio_value.push(element.total_usd);
this.portfolio_labels.push(moment(element.timestamp, 'X'));
});
this.chart.update();
图表将更新。 但是,通过重新初始化数组,您可以对付vuejs。
TL; DR
如果要重新初始化对象,可以将数组分配给该对象:
Object.assign(this.portfolio_value, values);
Object.assign(this.portfolio_labels, labels);
这样,链接就可以正常工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.