В вашем коде есть несколько ошибок.Во-первых, если вы хотите вызвать метод из дочернего компонента, вы должны использовать специальный атрибут 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
Так что это означает, что ваш render
метод в mounted
не работает и не нужен.Ваш график уже нарисован на reactiveProp
после того, как вы установили chartData
prop.
Но, к сожалению, это:
this.datacollection.labels.push(13);
все еще не работает.Если вы посмотрите на исходный код здесь , вы увидите, что библиотека использует watcher только на chartData
.Это означает, что если вы измените все chartData
, это будет работать нормально (как это работает при первом рисовании).Пожалуйста, смотрите больше о watcher .
Так что, если вы хотите положиться на reactiveProp
, тогда, когда вы хотите обновить labels
, вы должны установить:
this.datacollection = {
...this.datacollection,
labels: this.datacollection.labels.concat(13) // avoid to mutate data
}