我有一个用外部文件中的数据绘制的图表。现在我想有一个select,用户可以在其中选择要读取的文件。这样图表就会动态变化。我如何使用vue和chartjs来实现这一点呢?
目前我在Home中导入的数据是这样的
<template>
<div class="home">
<Graph :vul_data="data"/>
</div>
</template>
<script>
import { Component, Prop, Vue } from 'vue-property-decorator';
import Graph from '@/components/Graph.vue';
import {data} from '@/data/dataFile.js'
@Component({
components: {
Graph,
},
})
export default class HomeView extends Vue {
data() {
return {
data: data,
}
}
}
</script>
每个文件都有这样的数据:
export const data = {
"points": {
"line1": {
"x": [
-11,
-11,
],
"y": [
7,
8,
]
},
},
}
组件是这样的:
<template>
<div>
<canvas id="myChart"></canvas>
</div>
</template>
<script>
import Chart from 'chart.js/auto';
export default{
name: "Graph",
props: ["vul_data"],
mounted(){
const ctx = document.getElementById('myChart');
const myChart = new Chart(ctx, {
type: 'scatter',
data: {
datasets: [{
label: 'Line 1',
data:[
{x: this.vul_data.points.line1.x[0], y: this.vul_data.points.line1.y[0]},
{x: this.vul_data.points.line1.x[1], y: this.vul_data.points.line1.y[1]},
],
},
]
},
});
}
}
</script>
<style>
</style>
1条答案
按热度按时间hiz5n14c1#
您可以有一个
<select>
,其中的选项包含与.js文件名相同的值。当所选内容发生更改时,运行一个方法,动态导入该文件,并将导入的数据赋给您作为属性传递给Graph组件的变量。简单的示例代码:第一个