【发布时间】:2018-05-22 14:52:58
【问题描述】:
我有一个包含两个图表的组件,我在按钮单击时显示。我使用图表的相同组件,但我通过两个不同的吸气剂给它不同的chartData。图表如下所示:
<script>
import { Bar, mixins } from 'vue-chartjs';
export default {
extends: Bar,
mixins: [mixins.reactiveProp],
props: ['chartData', 'options'],
mounted() {
this.renderChart(this.chartData, this.options);
},
};
</script>
我知道reactiveProp 会在数据发生变化时呈现一个新图表(并初始化漂亮的动画)。但目前两个吸气剂为this.chartData 提供相同的数据,所以当我尝试切换图表时,它保持不变。有什么方法可以更新或销毁数据,以便重新渲染图表,即使它从另一个 getter 获取相同的数据?由于某些原因,update()、destroy()、clear() 等方法没有奏效,但可能是我在错误的地方使用了它们。
这是我的图表页面:
<template>
<div>
<button @click="showAll = false">
Show old users
</button>
<button @click="showAll = true">
Show all users
</button>
<chart v-if="isChartData === true && showAll === false" :options="options" :chart-data="setDataOld" />
<chart v-if="isChartData === true && showAll === true" :options="options" :chart-data="setData" />
<div>
<template>
【问题讨论】:
-
使用key。
-
谢谢。我使用了它,现在每次单击按钮时都会重新渲染图表,但控制台显示:避免使用非原始值作为键,而是使用字符串/数字值。我添加了这样的密钥:
<chart v-if="isChartData === true && showAll === false" :options="options" :chart-data="setDataOld" :key="setDataOld" /> -
我想你想要
:key="'setDataOld'"。如果要使用显式字符串,则需要在双引号内使用单引号(反之亦然)。基本上,您不希望您的键是一个对象,您希望它是一些原始值,并且它不必是任何 特定 值,它只需要与图表不同一和图二。真的,你可以在你的情况下使用:key="1"和:key="2"。
标签: javascript vue.js chart.js vue-chartjs