- AppContent ->(event) -> Root -> (props) -> AppHeader 로 보내준다.
1) 버튼 클릭시 pass 이벤트가 넘어가는지
2) root에 data num이 잘 변경되는지
3) AppHeader에 props가 잘 넘어오는지
1. AppContent -> Root : event emit (pass가 올라옴)
2. Root 에 변경된 값 전달.
3. Root -> AppHeader : props로 값 전달
<body>
<div id="app">
<app-header v-bind:propsdata="num"></app-header>
<app-content v-on:pass="deliverNum"></app-content> //3.여기에 pass이벤트가 올라옴
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
var appHeader = {
template: '<div>header</div>',
}
var appContent = {
template: '<div>content<button v-on:click="passNum">pass</button></div>', //1. 버튼을 클릭하면
methods: {
passNum: function() {
this.$emit('pass', 10); //2.passNum 메소드가 실행되고 pass이벤트까지 넘어가면서 10이 넘어감.
}
}
}
new Vue({ //2. app-component의 상위 컴포넌트인 root에 data에 num을 선언
el: '#app',
components: {
'app-header': appHeader,
'app-content': appContent
},
data: {
num: 0
},
method:}
})
</script>
<body>
<div id="app">
<app-header v-bind:propsdata="num"></app-header> //5.상위 root에 넘어간 변경된 num 값 props로 전달받기
<app-content v-on:pass="deliverNum"></app-content> //4.pass 이벤트 받고 deliverNum실행 num값변경
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
var appHeader = {
template: '<div>header</div>',
props: ['propsdata']
}
var appContent = {
template: '<div>content<button v-on:click="passNum">pass</button></div>', //1. pass버튼을 클릭하면
methods: {
passNum: function() { //2. passNum메소드가 실행되고
this.$emit('pass', 10); //3.pass 메서드가 넘어가면서 10 전달
}
}
}
new Vue({
el: '#app',
components: {
'app-header': appHeader,
'app-content': appContent
},
data: {
num: 0
},
methods:{
deliverNum : function(value){
this.num = value;
}
}
})
</script>
</body>
'vue.js' 카테고리의 다른 글
액시오스(Axios) (0) | 2023.04.20 |
---|---|
뷰 라우터 (0) | 2023.04.19 |
뷰 인스턴스에서의 this (0) | 2023.01.11 |
컴포넌트 통신 - event emit (0) | 2023.01.11 |
컴포넌트 통신 - props (0) | 2023.01.10 |