Google Chartsの記事で描画したグラフとVue.jsの連動に挑戦。入力した数字
【目次】
前回のおさらい
前回のグラフ。一つ目の連想配列から値を読み込んでいる方。
See the Pen GoogleCharts 02 by イイダリョウ (@i_ryo) on CodePen.
コードの詳細は前回の記事を参照。
※参考:Google Chartsでスプレッドシートを読み込んでグラフを表示する - クモのようにコツコツと
投票ボタンを設置
ここに投票ボタンを設置する。
See the Pen GoogleCharts 05 by イイダリョウ (@i_ryo) on CodePen.
下に追加した投票ボタンを押すとグラフの値が変わった!
HTMLコード
<section> <!--中略--> <p>あなたが使っているのはどのエディタ?</p> <ul id="tohyo"> <li v-for="(item, c) in dataArray" v-if="c>0">{{item[0]}}:{{item[1]}} <button v-on:click="addOne(c)">投票</button> </li> </ul> </section>
#tohyo
の中に投票ボタンを配置- リスト
li
の中にv-for
属性とv-if
属性
v-for
の値(変数, 番号) in 配列
で配列から値と番号を取り出してループ
v-if
の値c>0
は条件でもし番号が0より大きければ
リストの中は配列の1つ目item[0]
で変数、2つめitem[1]
で番号を表示 - ボタン
button
の中にv-on:click
属性。値はaddOne()
メソッドで引数はc
v-for
属性、v-if
属性、v-on:click
属性はVue独自の属性。
データの1行目は項目名だったため、v-if
で2行目以降を読み込んでv-for
でループする。
JSコードにVueのコードを追加。
new Vue({ el: '#tohyo', data: { dataArray: editor }, methods: { addOne: function(val) { var obj = this.dataArray[val]; obj[1]++; this.dataArray.splice(val, 1, obj); drawChart(); } } });
- Vueインスタンス作成
- 連想配列1つ目
el
キーに#tohyo
タグと紐付け - 連想配列2つ目
data
キーの中も連想配列
dataArray
キーにデータの配列editor
の値を紐付け - 連想配列3つ目
methods
キーの中も連想配列
addOne
キーの値は無名配列、引数はval
変数obj
にデータdataArray
の該当する値を読み込む。objの値に1加算する
dataArrayに
splice()メソッドで値を追加。
valの位置から1つ削除して
objを追加。
drawChart()`メソッドでグラフを描画
HTMLの投票ボタンが押されたときに、そのボタンのaddOne()
メソッドが発火する。メソッドの処理はVueのmethods
にある。
該当するデータの配列にsplice()
メソッドで1追加する。追加した内容でグラフを描画する。
splice()
メソッドは配列に値を追加、削除するメソッド
※参考:Array.prototype.splice() - JavaScript | MDN
最後に
投票ボタンとグラフが紐づいて動的にグラフが書き換わりました!しかしこのままだとブラウザをリロードすると値がリセットされてしまいます。これを回避する方法としては、LocalStrageに値を登録する方法がありそうです。また、スプレッドシートから値を読み込んでいる場合はGASを使うとボタン操作に対応してスプレッドシートの値を編集できそう。また研究を続けます。それではまた!
※参考:Vue.jsの習得のためにやったことまとめ
qiita.com