【问题标题】:Make Chartkick wait for data to populate from Firebase before rendering chart让 Chartkick 在渲染图表之前等待从 Firebase 填充数据
【发布时间】:2018-05-03 02:51:47
【问题描述】:

我在我的 Vue 项目中使用了 chartkick。现在,数据是在图表渲染后从 Firebase 加载的,所以图表是空白的。当我在编辑器中更改代码时,图表会按预期呈现,因为它已从 Firebase 中检索到。有没有办法让 chartkick 在尝试渲染图表之前等待数据加载?谢谢!

折线图组件:

<template>
  <div v-if="loaded">
    <line-chart :data="chartData"></line-chart>
  </div>
</template>

<script>
export default {
  name: 'VueChartKick',
  props: ['avgStats'],
  data () {
    return {
      loaded: false,
      chartData: this.avgStats
    }
  },
  mounted () {
    this.loaded = true
  }
}
</script>

家长:

<template>
  ...
  <stats-chart v-if="avgStatsLoaded" v-bind:avgStats="avgStats" class="stat-chart"></stats-chart>
  <div v-if="!avgStatsLoaded">Loading...</div>
  ...
</template>

<script>
import StatsChart from './StatsChart'

export default {
  name: 'BBall',
  props: ['stats'],
  components: {
    statsChart: StatsChart
  },
  data () {
    return {
      avgStatsLoaded: false,
      avgStats: []
    }
  },
  computed: {
    sortedStats: function () {
      return this.stats.slice().sort((a, b) => new Date(b.date) - new Date(a.date))
    }
  },
  methods: {
    getAvgStats: function () {
      this.avgStats = this.stats.map(stat => [stat.date, stat.of10])
      this.avgStatsLoaded = true
    }
  },
  mounted () {
    this.getAvgStats()
  }
}

【问题讨论】:

  • 给我看看你的折线图组件的代码
  • @jacky - 当然,子组件(现在重命名为折线图)是折线图组件。感谢您的关注!

标签: vue.js chartkick


【解决方案1】:

修改您的 StatsChart 组件代码: 你可以直接使用道具

<template>
  <div v-if="loaded">
    <line-chart :data="avgStats"></line-chart>
  </div>
</template>

export default {
  name: 'VueChartKick',
  props: ['avgStats'],
  data () {
    return {
      loaded: false,
    }
  },
  mounted () {
    this.loaded = true
  }
}

【讨论】:

  • 在你的子组件代码中,通过chartData属性从父组件接收数据,但只在创建时接收,没有绑定关系,所以,当异步请求数据时,chartData的值为子组件不会更改,除非您使用 watch 来监控更改
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-31
  • 2018-09-05
  • 2017-07-23
  • 2016-04-30
  • 2017-05-22
  • 2019-05-30
相关资源
最近更新 更多