2017-12-06 2 views
0

v-model에 바인딩 된 선택 입력에 초기 값을 전달하려고합니다. 나는이 작동하지 않는 이유를 알아낼 수 없습니다 :Vue.js는 초기 값 prop를 사용하여 v-model 입력을 바인드합니다.

props: ['team'], 
data() { 
    form: { 
     data: { 
      country: this.team.country 
     } 
    } 
} 

form.data.countryundefined입니다. 그러나 소품 데이터는 실제로 전달됩니다. 나는 Vue Devtools (과 같은)으로 액세스 할 수 있으며이 소품의 다른 데이터를 인쇄 할 수 있습니다. 그러나 data()에는 등록되지 않았습니다.

또한 mounted()을 사용하여 디버깅을 시도하면 team 속성이 정의되지 않습니다.

mounted() { 
    console.log(this.team); 
} 

그러나 이전에 언급했듯이 템플릿은 렌더링 될 때 정의되며 이와 같이 사용할 수 있습니다.

<input class="input" type="text" name="name" :value="team.name" disabled> 

전달하는 속성이 data()에 인식되지 않는 이유는 무엇입니까?

+0

데이터 함수에서 객체를 'return'하는 것을 잊었습니까? – Bert

+0

아니요, 객체를 반환합니다. 반환 { 형태 : { isLoading : 거짓, 데이터 : { 국가 : } } this.team.country} – Fredrik

+1

는'team'가 비동기 적으로 채워집니다? 당신은 초기 값이'v-model'에 의해 묶여 있다고 말했습니다; 어떻게 그 일을하고 있는지 보여줄 수 있습니까? 실제 예제가 있으면 도움이 될 것입니다. – Bert

답변

0

소품 데이터는 부모에 의해로드됩니다. 이것은 @Bert의 코멘트에서 제안되었습니다.

-1

비동기 로딩은 문제가 아닙니다. 팀이 위에서 하드 코딩 된 경우에도 구성 요소에서 데이터가 생성 될 때 it's still undefined입니다. (구성 요소는 소품을 전달하는 루트 Vue 전에 만들어야합니다.)

누군가가 나를 교정 할 것입니다. 데이터에서 소품을 참조 할만한 충분한 이유가 없습니다.뭔가가 소품또는 (이 원하는 것을 찾을 수있는 현재의 구성 요소가 알고있는) 어느 데이터 (구성 요소는 정보를 제공 문맥의 드릴 것)입니다.

그런 다음 데이터를 한 번 만들었습니다. Vue는 변경 사항을 모두 감시하지만 루트 값의 변경에 취약합니다. 데이터가 생성 될 때 값으로 참조되는 것이 변경되면 반응 파이프가 손상됩니다. 이에 대한 대답은 store pattern입니다. 글로벌 범위에서 변수를 보았습니다. 변수는 내용이 변경 될 수 있음에도 불구하고 대체되지 않습니다.

code 
+0

이 질문에 대한 답을 제공하지 않습니다. 비평하거나 저자의 설명을 요청하려면 게시물 아래에 의견을 남겨 둡니다. - [리뷰에서] (리뷰/저품절 포스트/18220708) –

+0

"이 [질문]에 대한 대답은 매장 패턴을 사용하는 것입니다." – bbsimonbb