为了账号安全,请及时绑定邮箱和手机立即绑定

chartjs-vue 图表为空

chartjs-vue 图表为空

千万里不及你 2021-06-01 12:43:00
我正在按照示例制作测试图表并呈现图表,但它是空白的,带有虚拟数据。我的第一个想法是可能没有为线条传递选项,但是对于其他所有类型的图表,它dataCollection就像没有被填充一样。我对 Vue 很陌生(几个小时)所以也许它与不更新状态有关?语言.jsimport { Line, mixins } from 'vue-chartjs'//const { reactiveProp } = mixinsexport default {  extends: Line,  //mixins: [reactiveProp],  props: ['options'],  mounted () {    // this.chartData is created in the mixin.    // If you want to pass options please create a local options object    this.renderChart(this.chartData, this.options)  }}StatsSection.vue<template><!-- Stats Section --><div class="stats-wrapper" style="margin: 15px 0; padding: 15px;">  <languages :chart-data="datacollection"></languages></div></template><script>import Languages from './charts/Languages.js'export default {  components: {    Languages  },  data() {    return {      datacollection: {}    }  },  mounted() {    this.fillData()  },  methods: {      fillData () {        this.datacollection = {          labels: [80, 12],          datasets: [            {              label: 'Data One',              backgroundColor: '#f87979',              data: [40, 60]            }, {              label: 'Data One',              backgroundColor: '#f87979',              data: [72, 43]            }          ]        }      }    }}</script>
查看完整描述

3 回答

?
繁华开满天机

TA贡献1816条经验 获得超4个赞

这确实是因为没有为网格线传递任何选项。我下面的例子假设你已经在我没有的地方设置了你的选项。


语言.js


import {

  Bar,

  mixins

} from 'vue-chartjs'


export default {

  extends: Bar,

  mixins: [mixins.reactiveProp],

  props: ['chartData', 'options'],

  data() {

      return {

          options: { 

              scales: {

                  yAxes: [{

                      ticks: {

                          beginAtZero: true

                      },

                      gridLines: {

                          display: true

                      }

                  }],

                  xAxes: [{

                      gridLines: {

                          display: false

                      }

                  }]

              },

              legend: {

                  display: true

              },

              responsive: true,

              maintainAspectRatio: false

          }

      }

  },

  mounted() {

      this.renderChart(this.chartdata, this.options)

  }


}

//img1.sycdn.imooc.com//60b88bc50001166609330943.jpg

查看完整回答
反对 回复 2021-06-03
?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞

在 StatsSection.vuefillData()created(){..here...}而不是mounted(){}在 StatsSection.vue 中调用您的方法将解决您的问题。Created将在挂载之前调用,因此您的数据收集变量在第一次不会为空。


查看完整回答
反对 回复 2021-06-03
  • 3 回答
  • 0 关注
  • 337 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信