vue.jsを用いた応募フォームを作ってみた
はじめに
別のアプリを作ることでToDoアプリで得た知識をより固めていこうという主旨の元、今回は応募フォームを作ってみた。
See the Pen 応募フォーム by KKZoo (@kkzoo) on CodePen.
ファイルのアップロードとv-modelについて
ファイルのアップロードを<input type="file">
で行うときに<input type="file" v-model="file">
ではvue.js側のdataに保存することができないので参考資料1を元にfile
の中に読み込んだファイルデータを格納した。
methods: { onDrop: function(event){ this.file = event.target.files[0]; console.log(this.file); }
このときのevent.targetについては参照資料2の説明で記述されていますが、<input type="file">
でデータを受け取るとevent
の中のtarget
の中にあるfiles[]
という配列の中にデータが保存されます。そのデータをthis.file
の中に代入することで、vue.js側でデータを受け取ることができます。
data値の参照渡しについて
最初はindex.html
とresult.html
の別々にコードを書いていたのだが、ページ間の参照渡しについて理解不足だったためindex.html
にまとめて、v-if
関数と変数judg
を用いることで値を渡すことにした。
ページの切り替えに使ったjudg
が以下の値の時に夫々のページを開く様に設計した。
- 入力フォーム側の値は
judg == false
- 確認側の値は
judg == true
このページ間の参照渡しに関してはvue.jsらしいもっとスマートなやり方があると思われるので今後の課題になる。
最後に
ファイルアップローダーの作成のところで大分つまったが、その問題について調べてここまで完成することができたのでよかったと思う。