2017-09-11 9 views
0

이 모달 내 하위 구성 요소에서 vuejs 모달을 닫고 싶습니다. 케이스 :Vue.js 하위 구성 요소의 모달을 닫습니다.

<modal name="some-modal"> 
     <some-component></some-component> 
</modal> 

내부 SomeComponent는 좀 모달을 닫으려면. 좋은 접근 방법입니까? 더 나은 방법으로 할 수 있습니까? 제발, 감사합니다

답변

0

물론 문제가되지 않습니다.

https://vuejs.org/v2/guide/components.html#Custom-Events

는 지금까지이 이상적인 방법 인 경우 판단으로, 아무도 당신이 준 정보를 최소한으로 말할 수 없다 : 당신은 뷰의 사용자 정의 이벤트 시스템을 사용할 수 있습니다.

1

this.$emit('exit', true)을 사용하여 하위 구성 요소에서 이벤트를 내 보내야합니다.

그런 다음 부모 구성 요소 (모달)에서 해당 이벤트를 수신합니다.

<modal name="some-modal"> 
    <some-component @exit="closeModal"></some-component> 
</modal> 

그런 다음 로직을 closeModal 함수에 씁니다.

0

여기에 콘텐츠를 넣기 위해 슬롯을 사용하는 사용자 설정 모달이 있습니다. false로 데이터

<my-modal v-if="modalState" @hide="modalState = false"> 
      ...Content 
</my-modal> 

설정 modalState을, 또는 소품이든로 정의 :

myModal.vue 


<template> 
    <transition name="modal"> 
     <div class="modal-mask"> 
      <div class="modal-wrapper"> 
       <header class="modal-header header-toolbar"> 
        <h3> 
         <span>{{modalTitle}}</span> 
        </h3> 
        <span class="icon"> 
         <i class="fa fa-times" aria-hidden="true" @click="hideModal"></i> 
        </span> 
       </header> 
       <section class="modal-body"> 
        <slot></slot> 
       </section> 
      </div> 
     </div> 
    </transition> 
</template> 

<script> 
    export default { 
     name: 'my-modal', 
     props: { 
      modalTitle: { 
       type: String, 
       default: null, 
      }, 
     }, 
     methods: { 
      hideModal() { 
       this.$emit('hide'); 
      }, 
     }, 
    }; 
</script> 

방법을 사용합니다. 모달을 표시하려면이를 사실로 변경하십시오. 클래스 정의를 원한다면 scss도 줄 수 있습니다

관련 문제