Если вы не знаете тип компонента, который вам нужно отобразить, вы можете использовать dynamici c component .
В двух словах это определяет тип компонента, используемого во время выполнения, на основе значения.
Предположим, у вас есть 2 разных типа компонентов
- TextComponent
- ImageComponent
Вы можете иметь список элементов
data () {
return {
items: [
{
id: 1,
val: 'something',
type: 'TextComponent'
},
{
id: 2,
val: 'something',
type: 'ImageComponent'
}
]
}
}
Теперь вы можете перебирать список и отображать компонент на основе type
<component v-for="item in items" :key="item.id" :is="item.type" v-model="item.value />
Если type
не является точным названием компонента, вы можете перевести его в условие :is
. Примерно так.
:is="getComponentFromTag(item.type)"
А потом напишите метод преобразования
methods: {
getComponentFromTag (tag) {
switch (tag) {
case 'text':
return 'TextComponent'
case 'img':
return 'ImageComponent'
}
}
}
Для примера выше я предполагаю, что items
выглядит так:
items: [
{
id: 1,
val: 'something',
type: 'text'
},
{
id: 2,
val: 'something',
type: 'img'
}
]