• 로그인
  • 장바구니에 상품이 없습니다.

home2 게시판 Vue 게시판 부모 컴포넌트에서 자식 컴포넌트 버튼 연결 질문

부모 컴포넌트에서 자식 컴포넌트 버튼 연결 질문

2 글 보임 - 1 에서 2 까지 (총 2 중에서)
  • 글쓴이
  • #28395

    김하연
    참가자

    모달 오픈 버튼 연결을 강의와 다르게  methods로 함수를 만들어서 오픈 하였는데 
    자식 컴포넌트로 보내면 어떻게 조정을 해야할지 모르겠습니다. 

    부모 컴포넌트 

    <template>
      <div id="container">
        <div class="menu">
          <a v-for="(item, i) in menu" :key="'item' + i">{{item}}</a>
        </div>
        <main id="contents" class="home_page">
          <section class="home_product_sec">
            <div class="room_wrap">
              <h2 class="list_ttl">상품 리스트</h2>
              <div class="room_list">
                <div class="room" v-for="(item, index) in rooms" :key="index">
                  <h4>{{item.address}}</h4>
                  <a :href="item.link" class="thumb_area">
                    <figure class="thumb" :style="background-image: url('${item.img}')"></figure>
                  </a>
                  <p>{{numSet(item.price)}}원</p>
                  <button @click="reportBtn(index)">허위매물신고</button>
                  <span>신고수 : {{item.report}}</span>
                  <button @click="[modalOpen(),listNum = index]">상세보기</button>
                </div>
              </div>
            </div>
          </section>
        </main>
      </div>
      <Discount/>
      <ListModal :roomsData="rooms" :listNumData="listNum" :modalOpen="modalOpen"/>
    </template>

    <script>

      import products from './assets/static/products';
      import Discount from './components/discountBanner.vue';
      import ListModal from './components/ListMdoal.vue';

      export default {
        name: 'App',
        components: {
          Discount,
          ListModal,
        },
        data() {
          return {
            listNum:0,
            menu: ['Home', 'Shop', 'About'],
            rooms:  products,
            isShow:false,
          }
        },
        methods: {
          numSet(val) {
            if (!val) return (val = '');
            return val.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',');
          },
          reportBtn(index) {
            this.rooms[index].report += 1;
          },
          modalOpen() {
            this.isShow = !this.isShow;
          }
        }
      }
    </script>

    자식컴포넌트 

    <template>
       <div class="modal_wrap" :class="{is_show : isShow}">
        <div class="modal">
          <button class="close" @click="isShow = false"></button>
          <div class="modal_head">
            <p class="ttl">{{rooms[listNum].address}}</p>
          </div>
          <div class="modal_body">
            <p class="txt">{{numSet(rooms[listNum].price)}}</p>
          </div>
          <div class="modal_foot">
            <div class="btn_area">
            </div>
          </div>
        </div>
      </div>
    </template>

    <script>
    export default {
      name:'ListModal',
      props: {
        roomsData: Array,
        listNumData: Number,
        modalOpen: Boolean,
      },
      data() {
        return {

        }
      }
    }

     

    #28411

    codingapple
    키 마스터

    등록시 타입은 boolean 말고 Function으로 하고

    자식컴포넌트안에서 modalOpen() 맘대로 쓰면 됩니다

2 글 보임 - 1 에서 2 까지 (총 2 중에서)
  • 답변은 로그인 후 가능합니다.

About

현재 월 700명 신규수강중입니다.

  (09:00~20:00) 빠른 상담은 카톡 플러스친구 코딩애플 (링크)
  admin@codingapple.com
  이용약관
ⓒ Codingapple, 강의 예제, 영상 복제 금지
top

© Codingapple, All rights reserved. 슈퍼로켓 에듀케이션 / 서울특별시 강동구 고덕로 19길 30 / 사업자등록번호 : 212-26-14752 온라인 교육학원업 / 통신판매업신고번호 : 제 2017-서울강동-0002 호 / 개인정보관리자 : 박종흠