#javascript #vue.js #vuejs2 #vue-component #buefy
#javascript #vue.js #vuejs2 #vue-компонент #buefy
Вопрос:
Я извлекаю набор данных, в который включено несколько полей в виде списка. Результаты должны быть показаны в буферной таблице (https://buefy.org/documentation/table ) и я хотел бы показать элементы списка в виде отдельных тегов (https://buefy.org/documentation/tag /) в ячейке таблицы.
Приведенный ниже код имитирует проблему. Результатом этого является отображение данных во втором столбце в виде обычного текста Value1, Value2, Value3.
Это не только выглядит плохо, но и потому, что между значениями нет пробелов, это делает таблицу слишком широкой для экрана, и из-за этого другие столбцы больше не видны.
Я бы хотел, чтобы в ячейке списка это выглядело примерно так:
Код для воспроизведения:
<template>
<b-table :data="data" :columns="columns"></b-table>
</template>
<script>
export default {
data() {
return {
data: [
{ 'id': 1, 'list': ["Value1","Value2","Value3"] },
{ 'id': 2, 'list': ["Value1","Value2","Value3"] },
{ 'id': 3, 'list': ["Value1","Value2","Value3"] }
],
columns: [
{
field: 'id',
label: 'ID',
},
{
field: 'list',
label: 'List',
}
]
}
}
}
</script>
Ответ №1:
Попробуйте следующий пользовательский рендеринг и добавьте помощник класса mr-2
, чтобы освободить пространство между тегами :
<b-table :data="data">
<b-table-column field="id" label="ID" centered v-slot="props">
{{props.row.id}}
</b-table-column>
<b-table-column field="list" label="List" centered v-slot="props">
<span v-for="item in props.row.list" class="tag mr-2">
{{item}}
</span>
</b-table-column>
</b-table>