• 카테고리

    질문 & 답변
  • 세부 분야

    프론트엔드

  • 해결 여부

    미해결

왜 click 이벤트를 인지 못하나요?

23.01.07 16:20 작성 조회수 380

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 태그의 클릭 이벤트와 이벤트 에밋이 두번 호출되진 않아요 :)