작성
·
538
1
app-header에 v-on:click="logText"를 추가하면 콘솔창에 'hi'가 두번 찍힐거라 예상했는데 hi가 한번밖에 안 찍히네요. 실험해보니까 app-header에서 this.$emit으로 전달한 pass이벤트만 인지되고 있고 click이벤트는 무시되고 있는 거 같은데 이유가 뭔가요?
<body>
<div id="app">
<app-header v-on:click="logText" v-on:pass="logText"></app-header>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
var appHeader = {
template: '<button v-on:click="passEvent">click me</button>',
methods: {
passEvent: function() {
this.$emit('pass');
}
}
}
var vm = new Vue({
el: '#app',
components: {
'app-header': appHeader,
},
methods: {
logText: function() {
console.log('hi');
}
},
});
</script>
</body>
답변 1
1
안녕하세요, v-on:click은 해당 태그에 클릭 이벤트 리스너를 붙이는 겁니다. 컴포넌트 태그에 버튼 이벤트 리스너를 붙였다고 해서 button 태그의 클릭 이벤트와 이벤트 에밋이 두번 호출되진 않아요 :)