본문 바로가기
프론트/Vue.js

Vue.js event, emit 예제

by 김어찐 2021. 11. 8.
728x90
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Vue.js</title>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
  </head>

  <body>
    <div id="app">
      <h4>당신이 좋아하는 파트를 선택하세요</h4>
      <h2>총 투표수 : {{ total }}</h2>
      <subject v-on:add-total-count="addTotalCount" title="코딩"></subject>
      <subject v-on:add-total-count="addTotalCount" title="알고리즘"></subject>
    </div>
    <script>
      Vue.component("Subject", {
        template: '<button v-on:click="addCount">{{title}} - {{ count }}</button>',
        //props 설정
        props: {
          title: String,
        },
        data: function () {
          return {
            count: 0,
          };
        },
        methods: {
          addCount: function () {
            this.count += 1;
            // 부모 v-on:이름 에 해당하는 이름의 이벤트를 호출
            this.$emit("add-total-count");
          },
        },
      });

      new Vue({
        el: "#app",
        data: {
          total: 0,
        },
        methods: {
          addTotalCount: function () {
            this.total += 1;
          },
        },
      });
    </script>
  </body>
</html>
728x90

'프론트 > Vue.js' 카테고리의 다른 글

Vue Eslint error 해결  (0) 2021.11.24
카카오 로그인, 로그아웃  (0) 2021.11.18
Vue.devtools 미작동 (vue cli 4.x)  (0) 2021.11.10