【发布时间】:2020-06-02 21:50:55
【问题描述】:
我想显示一个图表,其中包含捐款和捐款日期。奇怪的是,图表有时会显示(约 5% 的时间),但其他 95% 的时间不会显示(见底部图片)。
我对我遇到的这个问题感到非常困惑。我想使用从 API 获得的一些数据创建折线图。我正在使用chart.js。有时它会出现,有时它不会。它与立即完成(通过查看控制台)获取 API 数据无关。所以我确信这是我使用 Chart.js 的方式的问题。
这是我的 LineChart.vue:
<script>
import { Line } from 'vue-chartjs'
export default {
name: 'LineChart',
extends: Line,
props: {
label: {
type: String
},
chartData: {
type: Array
},
options: {
type: Object
}
},
mounted () {
const dates = this.chartData.map(d => d.donationDate).reverse()
const totals = this.chartData.map(d => d.totalMoney).reverse()
this.renderChart({
labels: dates,
datasets: [{
label: this.label,
data: totals
}]
},
this.options)
}
}
</script>
这是我的 Fundraiser.vue 代码:
<template>
<div class="container">
<div class="row mt-5">
<div class="col">
<h2>Positive</h2>
<line-chart :chart-data=recentDonations :options=chartOptions label='Positive'>
</line-chart>
</div>
</div>
</div>
</template>
<script>
import axios from 'axios'
import moment from 'moment'
import LineChart from '../components/LineChart.vue'
export default {
name: 'Fundraiser',
components: { LineChart },
data () {
return {
recentDonations: [],
chartOptions: {
responsive: true,
maintainAspectRatio: false
}
}
},
async created () {
const { data } = await axios({
url: 'http://api.justgiving.com/[MY API KEY]/v1/crowdfunding/pages/[SOME-PAGE]/pledges',
method: 'get',
headers: {
Accept: 'application/json'
}
})
console.log(data)
data.pledges.forEach(d => { // this part works fine.
if (d.donationAmount != null) {
const dateInEpochFormat = d.activityDate.substring(6, 16)
const donationMade = moment.unix(dateInEpochFormat).format('MM/DD')
this.recentDonations.push({ donationDate: donationMade, totalMoney: d.donationAmount })
}
console.log(this.recentDonations)
})
}
}
</script>
从下图中可以看出,数据被很好地提取(具有两个属性的对象数组:donateDate 和 totalMoney)
所以有时它会出现(非常罕见): [][
有人可以帮我解开这个谜吗?
【问题讨论】:
标签: javascript vue.js chart.js vuetify.js vue-chartjs