@slaxik123

Как отрисовать многомерный массив в таблице?

Нужно отрисовать многомерный массив в таблице. Если длина вложенного массива равна единице, то нужно просто вывести его как есть; если больше единицы, то нужно добавить кнопку "+" и выводить в таблице только первый элемент, при нажатии на "+", в этой же таблице после этой строки добавлять строки с остальными элементами этого подмассива.
  • Вопрос задан
  • 238 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега Vue.js
Сделать компонент, предназначенный для отображения одного элемента массива (т.е., одного вложенного массива). Корневым узлом будет tbody - их в таблице может быть несколько. Нулевой элемент переданного массива отображается всегда, а остальные по условию. Как-то так:

props: [ 'items' ],
data: () => ({
  showAll: false,
}),

<tbody>
  <tr>
    <td>{{ items[0] }}</td>
    <td>
      <button
        v-if="items.length > 1"
        v-text="showAll ? '-' : '+'"
        @click="showAll = !showAll"
      ></button>
    </td>
  </tr>
  <template v-if="showAll">
    <tr v-for="n in items.slice(1)">
      <td>{{ n }}</td>
      <td></td>
    </tr>
  </template>
</tbody>

Ну и создаёте столько экземпляров этого компонента, сколько в массиве элементов:

<table>
  <tbody v-for="n in items" :items="n" />
</table>

https://jsfiddle.net/vx3k8bsh/
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы