Polymer 2.0 を使用して、progressbar.js ライブラリを ES6 Web コンポーネント内にラップしようとしています。
次のエラー メッセージが表示されます。
console.errorrender-status.html:54
Uncaught TypeError: ProgressBar.SemiCircle は
HTMLElement.animateCircle (progress-bar.html:108) の HTMLElement のコンストラクタで はありません
。(progress-bar.html:85) callMethod
(render-status.html:51)
で runQueue (render-status.html:42)
で render-status.html:29
これは、Polymer 要素内にラップしようとしている次のコードの動作中の JSFiddleです。
src/progress-bar.html<link rel="import" href = "../bower_components/polymer/polymer-element.html">
<link rel="import" href = "shared-styles.html">
<link rel="import" href = "progressbar-js.html">
<dom-module id="progress-bar">
<template>
<style include="shared-styles">
:host {
display: block;
padding: 10 px;
}
p {
font - size: 200 % ;
font - family: Roboto, Open Sans, sans - serif;
}
.label {
color: #6FD57F !important;
font-size: 300%;
font-family: Roboto, Open Sans, sans-serif;
}
#container {
width: 200 px;
height: 100 px;
}
</style>
<div class="card">
<div class="circle">1</div>
<div id="container"></div>
[[animatePercentage]]
<p>1,234 steps</p>
</div>
</template>
<script>
class ProgressBar extends Polymer.Element {
static get is() {
return 'progress-bar';
}
static get properties() {
return {
animatePercentage: {
type: Number,
notify: true,
value: 0.7,
},
}
}
constructor() {
super();
}
ready() {
super.ready();
Polymer.RenderStatus.afterNextRender(this, function() {
//...
});
}
connectedCallback() {
super.connectedCallback();
this.animateCircle('container', this.animatePercentage);
}
animateCircle(containerId, animatePercentage) {
var startColor = '#FC5B3F';
var endColor = '#6FD57F';
var element = document.getElementById(containerId);
var circle = new ProgressBar.SemiCircle(element, {
color: startColor,
trailColor: '#eee',
trailWidth: 5,
duration: 2000,
easing: 'bounce',
strokeWidth: 5,
text: {
value: (animatePercentage * 100) + '%',
className: 'label'
},
// Set default step function for all animate calls
step: function(state, circle) {
circle.path.setAttribute('stroke', state.color);
}
});
circle.animate(animatePercentage, {
from: {
color: startColor
},
to: {
color: endColor
}
});
}
}
window.customElements.define(ProgressBar.is, ProgressBar);
</script>
</dom-module>
src/progressbar-js.html
<script src="../bower_components/progressbar.js/dist/progressbar.min.js" charset="utf-8"></script>