menu
書いてる野郎
orebike@gmail.com
HTML で作った階層のリスト構造と同一構造のJavaScript オブジェクトを作る。
var data = { id: 1, name: "", type: "folder", items: [ { id: 2, name: "aaa", type: "folder", items: [ { id: 3, name: "bbb", type: "file" }, { id: 4, name: "ccc", type: "file" }, { id: 5, name: "ddd", type: "file" } ] }, { id: 6, name: "eee", type: "file" }, { id: 7, name: "fff", type: "folder", items: [ { id: 8, name: "ggg", type: "file" }, { id: 9, name: "hhh", type: "folder", items: [ { id: 10, name: "iii", type: "file" }, { id: 11, name: "jjj", type: "file" } ] } ] }, { id: 12, name: "kkk", type: "file" } ] };
リストが含むデータはすべて盛り込めたと思う。 データを特定したいのでそこには id という連番をふっておいた。
それを Vue のデータとして登録する
var vm = new Vue({ el: "#app", data: data });
これで Vue の管理下にデータ管理のためのオブジェクトが入ったということになる。
ちなみに JavaScript でオブジェクトを作る際にキーに対しその値に変数の中の値を使いたい場合、 このように書くが
var data = "aaa"; var hoge = { data: data };
変数と同名のキーでその値を登録する場合は、このように書くことが許されている。
var data = "aaa"; var hoge = { data };
気持ち悪い気がするが、Vue.js では非常に多用してくるのでおぼえておいたほうがよいだろう
今回までのまとめ
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Hello</title>
<script src="https://unpkg.com/vue@latest"></script>
<script src="https://unpkg.com/vuex@latest"></script>
</head>
<body>
<div id="app">
<ul>
<li class="folder">
<h2>aaa</h2>
<ul>
<li class="file">bbb</li>
<li class="file">ccc</li>
<li class="file">ddd</li>
</ul>
</li>
<li class="file">eee</li>
<li class="folder">
<h2>fff</h2>
<ul>
<li class="file">ggg</li>
<li class="folder">
<h2>hhh</h2>
<ul>
<li class="file">iii</li>
<li class="file">jjj</li>
</ul>
</li>
</ul>
</li>
<li class="file">kkk</li>
</ul>
</div>
<script>
// ■■■■■■■■ 今回はここ
var data = {
id: 1, name: "", type: "folder",
items: [
{
id: 2, name: "aaa", type: "folder",
items: [
{ id: 3, name: "bbb", type: "file" },
{ id: 4, name: "ccc", type: "file" },
{ id: 5, name: "ddd", type: "file" }
]
},
{ id: 6, name: "eee", type: "file" },
{
id: 7, name: "fff", type: "folder",
items: [
{ id: 8, name: "ggg", type: "file" },
{
id: 9, name: "hhh", type: "folder",
items: [
{ id: 10, name: "iii", type: "file" },
{ id: 11, name: "jjj", type: "file" }
]
}
]
},
{ id: 12, name: "kkk", type: "file" }
]
};
var vm = new Vue({
el: "#app",
data: data // ■■■■■■■■ 今回はここ
});
</script>
</body>
</html>