制作一个用于选择绘制图表文件的<select>的方法
P粉022140576
P粉022140576 2023-08-20 10:08:18
[Vue.js讨论组]

我有一个使用外部文件数据绘制的图表。现在我想要一个选择框,用户可以选择要读取的文件。这样图表就可以动态改变。我如何使用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>
P粉022140576
P粉022140576

全部回复(1)
P粉107991030

您可以使用<select>标签,其中的选项包含与您的.js文件名称相等的值。当选择发生变化时,运行一个方法,动态导入该文件并将导入的数据赋值给您作为属性传递给Graph组件的变量。简单的示例代码:

<select @change="selectFile">
  <option value="dataFile1">文件一</option>
  <option value="dataFile2">文件二</option>
</select>
<Graph :vul_data="data" />
data() {
  return {
    data: null,
  };
},
methods: {
  selectFile(e) {
    import(`@/data/${e.target.value}.js`).then((res) => {
      this.data = res.data;
    });
  },
},
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号