#vue.js #vue-component
#vue.js #vue-компонент
Вопрос:
В подобном цикле я в основном просто перебираю значения элементов в виде строк, но иногда мне нужно вернуть визуализированный компонент, например элемент ссылки сборки или выпадающее меню, для этой ячейки таблицы — нужно найти способ вернуть другой вывод компонента вместо необработанной строки html
<tr class="listing-item listing-item-category">
<td v-for="td in headeritems">{{val(td.k)}}</td>
</tr>
Это вообще возможно? Я не нашел упоминания об этом, как должен идти код метода для возврата вывода другого компонента? Я знаю, что мне пришлось бы использовать v-html, но как его получить?
Комментарии:
1. существует ли какое-либо значение для поиска компонента или строки в «headeritems»? Если это так, используйте этот тег <компонент v-bind:is=»Имя компонента» ></component> для отображения компонента
Ответ №1:
Предположим, у нас есть такой список:
headerItems: [
{
type: 'text',
value: 'Some text'
},
{
type: 'img',
props: {
src: 'http://some-where....'
}
},
{
type: 'my-component',
value: 'v-model value',
props: {
prop1: 10,
prop2: 'Blah bla',
},
events: {
myEvt: () => console.log('myEvt has fired')
}
},
],
Итак, мы можем отобразить его:
<tr>
<td
v-for="(item, i) in headerItems" :key="i"
>
<div v-if="item.type === 'text'"> {{ item.value }}</div>
<component
v-else
:is="item.type"
v-model="item.value"
v-bind="item.props"
v-on="item.events"
/>
</td>
</tr>