์ฑ๊ธ ํ์ผ ์ปดํฌ๋ํธ์์ event emit์ ๊ตฌํํด๋ณด์
AppHeader.vue
<!-- ์ปดํฌ๋ํธ๋ ๋๋ฌธ์๋ก ์์ํ๋ ์ต์ ๋ ๋จ์ด๋ก ์กฐํฉ (html ๊ธฐ๋ณธ ํ๊ทธ์ ํท๊ฐ๋ฆด ์ ์์ผ๋ฏ๋ก)-->
<template>
<header>
<h1>Header</h1>
<!-- App.vue์์ props ๋ฐ์ดํฐ๋ก ๋์ด์จ ๊ฐ์ด ์๋์ผ๋ก ๋ค์ด์ด-->
<h1>{{ propsdata }}</h1>
<button v-on:click="sendEvent">send</button>
</header>
</template>
<script>
export default {
//์ธ์คํด์ค ์ต์
//1.propsdata๋ผ๋ ์ด๋ฆ์ ๋ฐฐ์ด์ ์์์ปดํฌ๋ํธ์์ ๋ด๋ ค์จ props data๋ด๋๋ค.
props : ['propsdata']
, methods : {
sendEvent : function () {
//์์ชฝ ์ปดํฌ๋ํธ ์ฆ, App.vue๋ก renew๋ผ๋ ์ด๋ฆ์ ์ด๋ฒคํธ๊ฐ ์ ๋ฌ
//๊ทธ๋ผ App.vue์์๋ ํ๊ทธ์ v-on์ผ๋ก renew๋ผ๋ ์ด๋ฒคํธ๋ฅผ ์ฐ๊ฒฐํด์
//๊ทธ ์ด๋ฒคํธ๊ฐ ์คํ๋๋ฉด ํธ์ถ๋๋ function์ ์ ์ํ ์ ์๋ค.
this.$emit('renew');
}
}
}
</script>
<style>
</style>
App.vue
<template>
<!-- template์๋ html element๊ฐ ์ต์์ 1๊ฐ๋ง ์์ด์ผํ๋ค -->
<div>
{{ str }}
<!--
//AppHeader.vue์์ ์ ์ํ ์ด๋ฆ="App.vue(์์ ์ปดํฌ๋ํธ)์ ๋ฐ์ดํฐ ์ด๋ฆ"
<app-header v-bind:ํ๋กญ์ค ์์ฑ ์ด๋ฆ="์์ ์ปดํฌ๋ํธ์ ๋ฐ์ดํฐ ์ด๋ฆ"></app-header>
str์ด๋ผ๋ data๊ฐ ์ผ์กฑ์ ํ๋กญ์ค๋ก ๋ด๊ฒจ ๋ด๋ ค๊ฐ
-->
<!-- 2. AppHeader.vue์์ ์ ์ํ ์ด๋ฆ์ธ propsdata๋ฅผ ๋ฃ์ด์ค -->
<app-header
v-bind:propsdata="str"
v-on:renew="renewStr">
</app-header>
</div>
</template>
<script>
import AppHeader from './components/AppHeader.vue'
export default {
data : function() {
return {
str : 'Header'
}
},
components : {
//๋ด๊ฐ ์ ์ํ ์ปดํฌ๋ํธ ๋ณ์ : ๋ด๊ฐ ์ ์ํ import ๋ณ์
'app-header' : AppHeader
},
methods : {
renewStr : function() {
//Header->hi
//propsdata์ธ Header๊ฐ renew ์ด๋ฒคํธ์ ์ํด hi๋ก ๋ฐ๋
this.str = 'hi';
}
}
}
</script>
<style>
</style>