图表JS,Canvas为空聚合物项目

时间:2019-02-27 21:42:36

标签: javascript canvas polymer chart.js

我正在从事聚合物项目,但仍在摸索中。我正在尝试使用图表JS,并尝试了多种方法并在线查找了其他问题,但没有任何帮助,因此我不得不寻求一些指导或在哪里可以解决我的问题。

它是我正在处理的聚合物项目,并且正在处理的html文件具有以下结构:

<link rel="import" href="../bower_components/iron-list/iron-list.html">
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.3.0/Chart.min.js"></script>



<dom-module id="sensors-app">
    <template>
        <style>
        </style>
        <div>
            <canvas id="chart"></canvas>
        </div>

        <app-header-layout fullbleed>
            </app-header>

            <iron-list onload="myFunction()" id="list" items="[[sensorDataModel]]" as="item" scroll-target="document">
                <template>
                    <div>
                    </div>
                </template>
            </iron-list>

        </app-header-layout>

    </template>

    <script>
       var ctx = document.getElementById("chart").getContext("2d");

        class SensorsApp extends Polymer.Element {

            static get is() { return 'sensors-app'; }

            static get properties() {
                return {
                    sensorDataModel: {
                        type: Array,
                        value: [],
                    }
                };
            }

            // rest of the code
        }

        window.customElements.define(SensorsApp.is, SensorsApp);
    </script>
</dom-module>

这是一个学校项目,我试图了解是否发生错误,因为我将画布放在错误的地方或其他我不理解的地方。任何帮助将不胜感激。我删除了代码,但保留了该结构,因为要在此处发布它会很长。 如果我问一个愚蠢的问题,我感到很抱歉,我大部分时间都在与后端一起工作,而这只是天生的,只是想学习,我在这么短的时间内几乎没有设法解决javascript问题,希望我能得到一些想法我做错了,画布始终为空。这是我得到的错误:

sensors-app.html:142 Uncaught TypeError: Cannot read property 'getContext' of null

1 个答案:

答案 0 :(得分:1)

您可以在聚合物类的ready方法中获取元素,以便在调用ready时定义元素,并且该元素不会为null。您可以使用以下代码

  class SensorsApp extends Polymer.Element {


    ready(){
    super.ready();
    var ctx = this.shadowRoot.querySelector("#chart").getContext("2d");
    }
    }