Vue.jsを用いて取得したco2濃度をグラフにするという処理を作ろうとしていますが、コンポーネント内でのデータの扱いに苦戦しております。
以下のコードでdata()
内のtime
とvalue
に要素を追加しても、A・Bの部分が更新されません。
js
1Vue.component("chart", { 2 extends: VueChartJs.Line, 3 mixins: [reactiveProp], 4 props: ["d"], 5 data() { 6 return { 7 time: [], 8 value: [], 9 // グラフに描画するデータ 10 data: { 11 labels: this.time, // A 12 datasets: [ 13 { 14 label: "co2濃度(ppm)", 15 data: this.value, // B 16 }, 17 ], 18 }, 19 // グラフのオプション 20 options: { 21 responsive: true, 22 maintainAspectRatio: false, 23 }, 24 }; 25 }, 26 mounted() { 27 this.renderChart(this.data, this.options); 28 }, 29 watch: { 30 // co2濃度の時間あたりのデータに更新があった場合 31 // 最新の1つを取り出してthis.timeとthis.valueに加える。 32 d() { 33 const v = this.d.slice(-1)[0]; // Ex) v = {time: "17:00", value: 1205} 34 this.time.push(v.time); 35 this.value.push(v.value); 36 }, 37 }, 38}); 39
chromeのVue developer tools を見る限り、time
とvalue
は更新されておりますがA・Bの部分は更新されておらずArray[0]
のままでした。
バージョン
Vue.js 2.6.12
Vue-chart.js 最新
Chart.js 2.7.1
thisの取り扱いやvueのリアクティブあたりを睨んで色々調べたのですが、解説せず質問させていただきました。よろしくお願いいたします。
追記です。
上記のコードにおいて初期値を以下のように変更したところ
js
1 data() { 2 return { 3 time: [1], 4 value: [1], 5 ...
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/30 05:23
2020/10/30 05:30
2020/10/30 05:30
2020/10/30 06:07