2017-01-28 3 views
0

이 같은 다른 내부 구성 요소를 구성하려고 :뷰 구성 요소 알 수없는

<prompt :users="users"> 
... 
    <dataset v-for="ds in users" :user="user"></dataset> 
... 
</prompt> 

하지만 분명히 내가 제대로 등록되지 해요 :

여기
[Vue warn]: Unknown custom element: <dataset> - did you register the component correctly? For recursive components, make sure to provide the "name" option. 
(found in root instance) 

는 난 방법 노력하면 등록하기 :

Vue.component('prompt', { 
    props: ['userdata', 'users'], 
    template: '#prompt-template',  
    components: { 
     'dataset': { 
      props: ['userdataset', 'user'], 
      template: '#dataset-template', 
     }   
    } 
}); 
app.js

마지막으로, 템플릿 :

<template id="dataset-template"> 
     <li>{{ user}}</li> 
    </template> 

    <template id="prompt-template"> 
     <transition name="modal"> 
      <div class="modal-mask"> 
       <div class="modal-wrapper"> 
        <div class="modal-container"> 

         <div class="modal-header"> 
          <slot name="header"> 
           default header 
          </slot> 
         </div> 

         <div class="modal-body"> 
          <slot name="body"> 

          </slot> 
         </div> 

         <div class="modal-footer"> 
          <slot name="footer"> 
           default footer 
           <button class="modal-default-button" @click="$emit('close')"> 
            OK 
           </button> 
          </slot> 
         </div> 
        </div> 
       </div> 
      </div> 
     </transition> 
    </template> 

은 내가 부족 어떤 단계가 있습니까? 구성 요소가 등록되지 않은 방법을 알 수 없습니다.

답변

0

구성 요소 내의 슬롯에 dataset 구성 요소를 사용하는 것이 문제입니다. Vue VM이 구성 요소 트리를 알아내는 동안 알 수없는 dataset 구성 요소를 인식합니다. 하위 구성 요소는 구성 요소 템플리트에서 사용되지만 슬롯에서는 사용되지 않습니다.prompt 구성 요소처럼 Vue VM 내에 dataset 구성 요소를 등록해야합니다. 또한 구성 요소의 템플릿도 (서로 옆에) 동일한 수준에 등록되어 있기 때문에 동일한 수준의 구성 요소를 등록 할 말이이

Vue.component('promp', { ... }) 
Vue.component('dataset', { ... }) 

을보십시오. the example you mentioned in another answers comment과 비교하십시오 : 여기 하위 구성 요소 axis-label은 상위 polygraph 구성 요소의 템플릿 내에서만 사용됩니다. 이는 구성 요소가 vue-vm이 아닌 하위 구성 요소를 파악하기 위해 계약을 체결 한 이후 유효합니다. 환언

:

그것은 A의 하위되지 않은 성분 A의 슬롯에 부품을 전달할 수 있어야한다. 따라서 구성 요소의 슬롯으로 전달되는 모든 구성 요소는 vue VM에서 사용할 수 있어야합니다. 구성 요소가 다른 구성 요소 템플릿 내에 표시하지 않는 경우

엄지 손가락의 규칙이

될 수 있습니다, 그것은 하위하지 않습니다.

+0

그런 경우 슬롯 태그를'''''에서 제거하면 안됩니다. "'오류가 없어지나요? 나는 그것을 제거하려고했지만 오류가 계속 발생합니다. –

+0

아마도 약간 혼란 스럽습니다. 핵심은 응용 프로그램의 주요 요소 내에서 구성 요소를 사용하는 경우 vue-VM 수준에서 등록해야한다는 것입니다. 때로는 프롬프트 밖에서'dataset' 컴포넌트를 표시하기를 원할 때가있을 것입니다. 'dataset'은 실제로'prompt'의 하위 구성 요소가 아닙니다. 그렇지 않습니까? 'prompt' 컴포넌트 내에 표시하고자하는 컴포넌트와 더 비슷합니다. – keksnicoh

+0

사실,'''dataset''은 연결된 SVG 예제와 매우 비슷한 하위 구성 요소입니다. 그것이 바로 프롬프트 구성 요소에 등록한 이유입니다. –

관련 문제