我希望我的函数在每次单击按钮时更新vue图表js显示的数据,但是我得到了一个错误:"_vm.chartData不是一个函数“。
我使用了指南中告诉我的计算属性,但是我做错了什么,我不知道。
这是我的代码:
<template>
<div>
<Bar
:chart-options="chartOptions"
:chart-data="chartData"
/>
<button v-on:click="chartData()">
Change Data
</button>
</div>
</template>
<script>
import { Bar } from 'vue-chartjs/legacy'
import {
Chart as ChartJS,
Title,
} from 'chart.js'
ChartJS.register(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale)
export default {
name: 'BarChart',
components: {
Bar
},
data() {
return {
chartOptions: {
responsive: true,
maintainAspectRatio: false
}
}
},
computed :{
chartData() {
const updatedChartData = {
labels: [
'January',
'February',
],
datasets: [
{
data: [
this.getRandomInt(),
this.getRandomInt(),
]
}
]
};
console.log(updatedChartData.datasets)
return updatedChartData;
},
},
methods:{
getRandomInt() {
return Math.floor(Math.random() * (50 - 5 + 1)) + 5
}
}
}
</script>如能提供任何帮助,将不胜感激。
发布于 2022-10-07 11:58:25
在Vue中,模板已经绑定到上下文中,因此您不需要this来处理变量和方法。
试试这个(没有双关意):*注意新变量chartDataValues
<template>
<div>
<Bar
:chart-options="chartOptions"
:chart-data="chartDataValues"
/>
<button v-on:click="chartData">
Change Data
</button>
</div>
</template>
<script>
import { Bar } from 'vue-chartjs/legacy'
import {
Chart as ChartJS,
Title,
} from 'chart.js'
ChartJS.register(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale)
export default {
name: 'BarChart',
components: {
Bar
},
data() {
return {
chartOptions: {
responsive: true,
maintainAspectRatio: false
},
chartDataValues: {}
}
},
methods: {
chartData() {
const updatedChartData = {
labels: [ 'January', 'February' ],
datasets: [{
data: [ this.getRandomInt(), this.getRandomInt(), ]
}]
};
console.log(updatedChartData.datasets)
this.chartDataValues = updatedChartData;
},
getRandomInt() {
return Math.floor(Math.random() * (50 - 5 + 1)) + 5
}
}
}
</script>https://stackoverflow.com/questions/73986793
复制相似问题