我正在从事聚合物项目,但仍在摸索中。我正在尝试使用图表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
答案 0 :(得分:1)
您可以在聚合物类的ready方法中获取元素,以便在调用ready时定义元素,并且该元素不会为null。您可以使用以下代码
class SensorsApp extends Polymer.Element {
ready(){
super.ready();
var ctx = this.shadowRoot.querySelector("#chart").getContext("2d");
}
}