<div id="app">
<app-header v-bind:propsdata="num"></app-header>
<app-content v-on:pass="deliverNum"></app-content>
<!-- 2. pass라는 이벤트를 받으면 deliverNum 실행 -->
</div>
var appHeader = {
template: '<div>Header</div>',
props: ['propsdata']
// 4. props로 상위 컴포넌트에서 num의 값을 받아온다.
}
var appContent = {
template: '<div>Content<button v-on:click="passNum">pass</button></div>',
methods: {
passNum: function() {
this.$emit('pass', 10);
// 1. pass라는 이벤트에 10을 인자로 넘김
}
}
}
new Vue({
el: '#app',
components: {
'app-header': appHeader,
'app-content': appContent
},
data: {
num: 0
},
methods: {
deliverNum: function(val) {
this.num = val;
}
// 3. deliverNum의 인자로 10을 받고 this.num에 대입한다.
}
});
같은 레벨의 컴포넌트는 통신이 안되므로 appContent에서
부모 컴포넌트(root)에게 이벤트를 올려주고
하위 컴포넌트(appHeader)에게 props로 데이터를 내려줘야한다.
반응형
'Vue' 카테고리의 다른 글
Vue 환경변수 (0) | 2021.09.07 |
---|---|
vue.js axios 예제 (2) | 2020.01.13 |
vuex, router로 영화 앱 만들기 예제 (4) | 2020.01.06 |
slot 으로 재사용하기 (0) | 2019.11.22 |
Vue.js에 대해 (0) | 2019.09.25 |