Vue.js / JSON から情報を引っ張ってくる その8
やること
- Vue Router を使用してコンポーネント間のメソッドの受け渡しする。
ファイル構成
myButton.vue
で仕込んだクリックイベントを App.vue
へ渡す。
. ├── index.js ├── App.vue ├── /router/ | └── index.js └── /components/ └── /page/ | ├── top.vue | └── about.vue └── /common/ | ├── myHeader.vue | └── myFooter.vue └── /element/ └── /button/ └── myButton.vue
index.js
受け渡しとはあまり関係ないですが、Vue Router を使う
import Vue from 'vue' import Router from 'vue-router' import top from '@/components/page/top' import about from '@/components/page/about' Vue.use(Router) export default new Router({ routes: [ { path: "/", name: 'top', component: top }, { path: "/about", name: 'about', component: about } ] })
App.vue
myButton.vue
で仕込んだ 'event-test'
のメソッドを myButton
のクリックイベントとして登録
<template> <div id="app"> <myHeader></myHeader> <main> <router-view></router-view> <myButton @event-test="clickAlert"></myButton> </main> <myFooter></myFooter> </div> </template> <script> import "normalize.css"; import myHeader from './components/common/myHeader.vue'; import myFooter from './components/common/myFooter.vue'; import myButton from './components/element/button/myButton.vue'; export default { name: 'App', components: { myHeader, myFooter, myButton }, methods: { clickAlert: function(event) { alert('event test'); } } } </script>
myButton.vue
'event-test'
を $emit
しておく
<template> <button @click="emitEventTest">Button</button> </template> <script> export default { name: 'myButton', methods: { emitEventTest () { this.$emit('event-test',event) } } } </script>
まとめ
- やること簡単にしようと思ってたらJSONは関係のない内容になってしまった。(前回の引き継いだ結果、ちょっと複雑になりすぎたので、簡単なコンテンツ内容にして進めるようにしました。)
- 次回はこれをベースにポートフォリオのサイトを作るの目標にします。ふつうのWebサイトなら Vue.js 使って構築できそうな気がしてきました。
- コンポーネントについては、Vue.jsコンポーネント入門 | Hypertext Candy がわかりやすそうです。
ほか参考にした記事など
- 3連休だしVue.jsをはじめよう:コンポーネントを使ってみる - 豆腐とコンソメ
- vue.js でコンポーネント間でデータ受け渡しとイベント発行周り - Qiita
- [【Vue.jsでSPAへの移行】コンポーネントを使ってみよう | orizuru](