반응형
VueJs의 동적 컴포넌트에 동적 소품을 결합하는 방법 2
컴포넌트 이름 목록(API 서버에 대한 AJAX 호출에서 가져온 것)을 컴포넌트로 렌더링하고 관련 속성을 각 컴포넌트에 동적으로 바인드하는 방법을 알고 싶습니다.
지금까지 컴포넌트를 나타내는 항목의 JSON 목록을 반복하여 이들 컴포넌트를 정상적으로 렌더링했습니다.이제 각 컴포넌트의 속성을 바인드합니다.v-bind
.
다음 예에서는item-one
컴포넌트가 수신하다image
의 소유물건item1.jpg
값 및item-two
컴포넌트가 속성을 수신하지 않습니다.
<template>
<div v-for="item in items">
<component :is="Object.keys(item)[0]" :v-bind="???"></component>
</div>
</template>
<script>
import ItemOne from '../components/item-one'
import ItemTwo from '../components/item-two'
export default {
components: {
ItemOne,
ItemTwo
},
asyncData () {
return {
items: [
{ 'item-one': { 'image': 'item1.jpg' } },
{ 'item-two': { } }
]
}
}
}
</script>
나는 그것을 사용해봤어요.:v-bind="Object.values(Object.keys(item)[0])"
하지만 나는 그 속성을 이해한다.v-bind="[object Object]"
참조할 수 있습니다.
먼저 결장을 제거하고 나서v-bind
대장은 의 단수입니다v-bind
Atribute에 프리픽스가 붙을 경우.단, 바인드할 키쌍의 오브젝트를 전달할 때는 단순히v-bind
지시.
둘째, 각 항목의 속성을 올바르게 참조하고 있지 않습니다.다음과 같이 참조할 수 있습니다.
v-bind="item[Object.keys(item)[0]]"
사용할 필요가 없습니다.Object.keys
그 구조를 바꾸면items
속성:
items: [{
type: 'item-one',
props: { 'image': 'item1.jpg' },
}, {
type: 'item-two',
}]
이 방법으로 컴포넌트 유형과 속성을 사전에 명시적으로 라벨로 표시함으로써 템플릿을 이해하기 쉬워집니다.
<div v-for="item in items">
<component :is="item.type" v-bind="item.props"></component>
</div>
언급URL : https://stackoverflow.com/questions/43929099/how-to-bind-dynamic-props-to-dynamic-components-in-vuejs-2
반응형
'programing' 카테고리의 다른 글
VUE : Vuelidate between.스토어 값에서 최대값을 사용하시겠습니까? (0) | 2022.06.11 |
---|---|
Vue.js에서의 이메일 검증 (0) | 2022.06.11 |
C/C++에서 \x는 무엇을 의미합니까? (0) | 2022.06.11 |
Java에서 기본 메서드를 명시적으로 호출하는 중 (0) | 2022.06.11 |
Vue-CLI 구성 요소 오류: 템플릿 컴파일러를 사용할 수 없는 Vue 런타임 전용 빌드를 사용하고 있습니다. (0) | 2022.06.11 |