【学習メモ】動かして学ぶ!Vue.js 開発入門 その11
Chapter13 JSON データを表示させてみよう
01 JSON ファイルの読み込み方
JSON を読み込む
<div id="app">
<!-- JSON を読み込む -->
<input type="file" v-on:change="onFileChange" />
<p>読み込みデータ:<br />{{ loadData }}</p>
</div>
new Vue({
el: "#app",
data: {
loadData: ""
},
methods: {
onFileChange: function(e) {
file = e.target.files[0];
if (file) {
var reader = new FileReader();
var vm = this;
reader.onload = function(e) {
json = JSON.parse(e.target.result);
vm.loadData = json;
};
reader.readAsText(file);
}
}
}
});
test.json
[
{ "title": "A", "body": "a" },
{ "title": "B", "body": "b" },
{ "title": "C", "body": "c" }
]
結果

02 JSON データを読み込んで、コンポーネントで並べる / 03 改良する:トランジションをつける
配列データをコンポーネントで並べる
<div id="app">
<!-- 配列データをコンポーネントで並べる -->
<transition-group>
<div v-for="item in dataArray" v-bind:key="item.title">
<my-product v-bind:object="item"></my-product>
</div>
</transition-group>
<button v-on:click="sortData">ソート</button>
<button v-on:click="shuffleData">シャッフル</button>
<p><input type="file" v-on:change="loadData" /></p>
</div>
var MyComponent = {
props: ["object"],
template: "<div><p>{{ object.title }}</p><p>解説:{{ object.body }}</p></div>"
};
new Vue({
el: "#app",
data: {
dataArray: [
{ title: "AAA", body: "aaa" },
{ title: "BBB", body: "bbb" },
{ title: "CCC", body: "ccc" }
]
},
components: {
"my-product": MyComponent
},
methods: {
sortData: function() {
this.dataArray.sort(function(a, b) {
return a.title < b.title ? -1 : 1;
return 0;
});
},
shuffleData: function() {
var buffer = [];
var len = this.dataArray.length;
for (var i = len; len > 0; len--) {
var r = Math.floor(Math.random() * len);
buffer.push(this.dataArray[r]);
this.dataArray.splice(r, 1);
}
this.dataArray = buffer;
},
loadData: function(e) {
file = e.target.files[0];
if (file) {
var reader = new FileReader();
var vm = this;
reader.onload = function(e) {
json = JSON.parse(e.target.result);
vm.dataArray = json;
};
reader.readAsText(file);
}
}
}
});
program.json
[
{
"title": "Python言語",
"body": "数値計算が得意な、シンプルなプログラミング言語です。人工知能の研究で注目の言語です。"
},
{
"title": "C言語",
"body": "ハードウェアやOS向けのプログラミング言語です。古くからある言語で、数多くのプログラミング言語の元になりました。"
},
{
"title": "Java言語",
"body": "ハードウェアに依存しないプログラミング言語です。"
}
]
結果
