[英]How to update the chart dynamically with vue-chartjs?
我是第一次使用vue.js
和vue-chartjs
。 在简化的代码示例中,我想通过按add Label
按钮向图表添加标签,但图表没有更新。 我的代码基于本教程。
我尝试从子组件调用render
方法,但这不起作用。
我希望当我单击add Label
按钮时,标签13
将被添加到图表中。
对我有帮助的是添加了一个v-if="loaded"
,您将在更改之前将其设置为false
。 然后,在您进行更改后,将其设置为false
。
您的代码中有一些错误。 首先,如果要从子组件调用方法,则必须使用特殊属性ref
。 请参阅有关ref的更多信息。
所以在你的代码中应该是:
<template>
...
<chart ref='chart' :chart-data="datacollection"></chart>
...
</template>
<script>
...
this.$refs.chart.render() // Not Chart.render()
...
</script>
其次,您的 Chart.js 中有一个错字:
this.chartData // Not this.chartdata
因此,这意味着您在mounted
中的render
方法不起作用且不必要。 设置chartData
后,您的图表已由reactiveProp
绘制。
但不幸的是:
this.datacollection.labels.push(13);
还是不行。 如果您查看此处的源代码,您将看到该库仅在chartData
上使用观察器。 这意味着如果您更改整个chartData
这将正常工作(因为它在第一次绘制时工作)。 请参阅有关watcher的更多信息。
所以如果你想依赖reactiveProp
那么当你想要更新labels
时,你应该设置:
this.datacollection = {
...this.datacollection,
labels: this.datacollection.labels.concat(13) // avoid to mutate data
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.