はじめに
Vue.jsでJsonデータを使いたいときがあり、そのやり方を備忘録の意味合いもかねて残しておきたいと思います。
Json
今回使うJsonはこんな感じ。
Monsters.json
[ {"id": 1, "name": "スライム"}, {"id": 2, "name": "ドラキー"}, {"id": 3, "name": "ももんじゃ"} ]
axiosを使う
axios.get('Monsters.json') .then(response => { this.monsters = response.data }) .catch(err => { console.error(err) })
axios
とはHTTP通信んを簡単に扱えるようにしたJavascriptのライブラリのようで、非常に簡単にリクエスト,レスポンスを取得することができます。
then
は成功したときの処理を,catch
にはなにかしらのエラーで失敗したときの挙動を書きます。
実際に使ってみる
index.html
<!DOCTYPE html> <html lang="js"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>AxiosTest</title> </head> <body> <div id="app"> <ul> <li v-for="(item, index) in monsters" v-bind:key="item.id"> ID.{{ item.id }} Name.{{ item.name }} </li> </ul> </div> <script src="https://cdn.jsdelivr.net/npm/vue"></script> <script src="https://cdn.jsdelivr.net/npm/axios@0.18.0/dist/axios.min.js"></script> <script> var app = new Vue({ el: '#app', data: { monsters: [], }, created: function(){ axios.get('Monsters.json') .then(response => { this.monsters = response.data }) .catch(err => { console.error(err) }) } }) </script> </body> </html>
これを実際に組み込んでみるとこんな感じ。今回の場合はindex.html
とMonsters.json
を同じフォルダ内に入れることを忘れないでください。