Я получил файл «PieChart.vue». С другой стороны, у меня есть другой файл с вызовом dashboard.vue, но я не могу вызвать функцию PieChart.vue -> genChart. Можно ли вызвать функцию? Я хочу обновить графики. Это связано с тем, что я использую вкладки vuetify, но vue chart js, похоже, не может отобразить диаграмму на вкладке vuetify. Для отображения диаграмм требуется повторный рендеринг. Любое решение для этого случая?
PieChart.vue:
<script>
import { Pie } from "vue-chartjs";
export default {
extends: Pie,
name: "v-PieChart",
props: {
data: Array,
label: Array,
color: Array,
},
watch: {
data: function (newData, oldData) {
this.debouncedGenChart();
},
},
created: function () {
this.debouncedGenChart = _.debounce(this.genChart, 500);
},
methods: {
genChart: function () {
this.renderChart(
{
labels: this.label,
datasets: [
{
backgroundColor: this.color,
data: this.data,
},
],
},
{ responsive: true, maintainAspectRatio: false }
);
},
},
};
</script>
Приборная панель.vue:
<v-tabs>
<v-tab
:href="`#tab-AM`"
@click="$refs.leaveChartAM.genChart()"
>AM</v-tab>
<v-tab
:href="`#tab-PM`"
@click="$refs.leaveChartPM.genChart()"
>PM</v-tab>
<v-tab-item :value="'tab-AM'">
<v-PieChart
:data="charts.leave.data"
:label="charts.leave.label"
:color="['#00E676', '#66BB6A', '#AED581']"
ref="leaveChartAM"
></v-PieChart>
</v-tab-item>
<v-tab-item :value="'tab-PM'">
<v-PieChart
:data="charts.leave.data"
:label="charts.leave.label"
:color="['#00E676', '#66BB6A', '#AED581']"
ref="leaveChartPM"
></v-PieChart>
</v-tab-item>
</v-tabs>