ChartJS Vue.js此.$el.getContext('2d')不是函数

qeeaahzv  于 2022-11-06  发布在  Chart.js
关注(0)|答案(1)|浏览(232)

我正在用Vue.js Version 2和Charts.js来创建一个组件,我可以将数据传递到该组件,它将以一种很好的方式显示这些数据。

<template>
  <div class="container">
    <canvas width="900" height="400"></canvas>
  </div>
</template>

<script>
    export default {
        props: ['customers','dates'],
        mounted() {
            console.log('Chart-Component mounted.');
            var context = this.$el.getContext('2d');
            console.log(context);
            var myChart = new Chart(context, {
                type: 'line',
                data: {
                    labels: this.dates,
                    datasets: [{
                        label: '# of Votes',
                        data: this.customers,
                        backgroundColor: [
                            'rgba(255, 99, 132, 0.2)'
                        ],
                        borderColor: [
                            'rgba(255,99,132,1)'
                        ],
                        borderWidth: 3,
                        cubicInterpolationMode: 'monotone',
                        lineTension: 0
                    }]
                },
                options: {
                    scales: {
                        yAxes: [{
                            ticks: {
                                beginAtZero:true
                            }
                        }]
                    }
                }
            });

        }
    }
</script>

如果我给予画布一个id并通过以下方式获取上下文:

document.querySelector('#graph').getContext('2d');

它工作得很好,但是我只能使用我的组件一次,这显然不是我想要的。所以我试图通过以下方式获得上下文:

this.$el.getContext('2d');

但是我得到了以下错误:
[Vue warn]:挂接时出错:“类型错误:此.$el.getContext不是函数”
我在谷歌上搜索并检查了医生,但老实说,我真的是新的vue,我真的不知道我可以搜索了...
所以,如果有人能帮我,或者能告诉我,我应该检查下一步,这将是高度赞赏!谢谢

quhf5bfb

quhf5bfb1#

在本例中,this.$el是对div#container的引用。您需要做的是使用ref。
ref用于注册对元素或子组件的引用。该引用将在父组件的$refs对象下注册

<div class="container">
  <canvas ref="canvas" width="900" height="400"></canvas>
</div>

然后呢

this.$refs.canvas.getContext('2d')

相关问题