VueJ 컴포넌트에서 데이터를 가져오는 방법s
다음과 같은 컴포넌트가 있습니다.
요소
<template>
<div>
<label class="typo__label">Single selecter</label>
<multiselect v-model="value" :options="options" :searchable="false" :close-on-select="false" :show-labels="false" placeholder="Pick a value"></multiselect>
</div>
</template>
<script>
import Multiselect from 'vue-multiselect'
export default {
components: {
Multiselect
},
data () {
return {
value: '',
options: ['Select option', 'options', 'selected', 'mulitple', 'label', 'searchable', 'clearOnSelect', 'hideSelected', 'maxHeight', 'allowEmpty', 'showLabels', 'onChange', 'touched']
}
}
}
</script>
내 페이지에서 다음과 같이 사용하고 있습니다.
<p id="app-two">
<dropdown></dropdown>
@{{ value }}
@{{ message }}
</p>
<script>
new Vue({
el: '#app',
data: {
message: 'Test message'
}
});
</script>
페이지를 실행하면 @{{ message }}에 "test message"가 표시되지만 @{{ value }}은(는) 공백입니다.VueJS Dev Tools에서 업데이트되는 드롭다운 구성 요소의 값은 볼 수 있지만 페이지에 표시되지 않습니다.vue 요소의 컴포넌트 데이터에 액세스하려면 어떻게 해야 합니까?예를 들어 @{ dropdown.value }} 입니다.
<template>
<div>
<label class="typo__label">Single selecter</label>
<multiselect v-model="internalValue" :options="options" :searchable="false" :close-on-select="false" :show-labels="false" placeholder="Pick a value"> </multiselect>
</div>
</template>
<script>
import Multiselect from 'vue-multiselect'
export default {
components: {
Multiselect
},
props: ['value'],
data () {
return {
internalValue: this.value,
options: ['Select option', 'options', 'selected', 'mulitple', 'label', 'searchable', 'clearOnSelect', 'hideSelected', 'maxHeight', 'allowEmpty', 'showLabels', 'onChange', 'touched']
}
},
watch:{
internalValue(v){
this.$emit('input', v);
}
}
}
</script>
그리고 당신의 페이지에서
<p id="app-two">
<dropdown v-model="selectedValue"></dropdown>
@{{ selectedValue}}
@{{ message }}
</p>
<script>
new Vue({
el: '#app',
data: {
selectedValue: null
message: 'Test message'
}
});
</script>
예를 들어 멀티 셀렉트가 아닌 커스텀컴포넌트를 사용하여v-model
.
이것이 나에게 가장 좋고 깨끗한 방법이다.
상위 컴포넌트
<template>
<ChildComponent v-model="selected" />
</template>
하위 구성 요소
<template>
<Multiselect
:value="value"
:options="options"
:show-labels="false"
:multiple="true"
:close-on-select="false"
:clear-on-select="false"
:searchable="false"
:limit="1"
:limit-text="(count) => $t('app.multiselect.and_n_more', { n: count })"
:placeholder="$t('app.select')"
label="name"
track-by="name"
@input="$emit('input', $event)"
/>
</template>
<script>
export default {
props: {
value: {
type: Array,
default: () => []
}
},
data() {
return {
options: [{id:1, name:'John'}, {id:2, name:'Tom'}]
}
}
}
</script>
언급URL : https://stackoverflow.com/questions/42684754/how-to-get-data-from-a-component-in-vuejs
'programing' 카테고리의 다른 글
잘못된 소품: 소품 "data"에 대한 형식 검사에 실패했습니다.어레이가 필요하지만 오브젝트가 있습니다. (0) | 2022.08.25 |
---|---|
v-if / v-show를 사용하지 않고 vue로 이행 (0) | 2022.08.25 |
django-rest에서 데이터를 검색하여 형식으로 표시 (0) | 2022.08.25 |
반사란 무엇이며 왜 유용한가? (0) | 2022.08.25 |
fread는 실제로 어떻게 작동합니까? (0) | 2022.08.25 |