vue2遍历数组形成表格?

这是我写到table的vue

<table border="1">
      <tr>
        <th rowspan="2">序号</th>
        <th rowspan="2">材料题名</th>
        <th rowspan="3">材料形成时间</th>
        <th rowspan="2">页数</th>
        <th rowspan="2">备注</th>
      </tr>
      <tr>
        <td>年</td>
        <td>月</td>
        <td>日</td>
      </tr>
      <tr v-for="(item,index) in 20" :key="index">
        <td>一</td>
        <td>履历材料</td>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
      </tr>
    </table>
[
        {
          label: '材料题名',
          children: [
            {
              label: '目录一',
            },
            {
              label: '目录一',
            }
          ]
        },
        {
          label: '材料题名',
          children: [
            {
              label: '目录一',
              children: [
                {
                  label: '目录1-1'
                }
              ]
            },
            {
              label: '目录一',
            }
          ]
        }
      ]

现在有这么一个数组,children的数量不是固定的,把这个数组里面的内容展示成表格数据
image.png
children的数据也是每一行数据,大概样子就是上面图片那样
table应该怎么写,各位大佬麻烦了挺急的

阅读 1.1k
avatarAI BotBETA

要将数组数据转化为表格数据,你需要使用 Vue 的 v-for 指令来迭代数组中的每一个元素,并为每个元素创建一个新的表格行。假设你的数据存储在名为 data 的数组中,以下是你可以如何将数据渲染到表格中的示例:

<table border="1">
    <thead>
        <tr>
            <th rowspan="2">序号</th>
            <th rowspan="2">材料题名</th>
            <th rowspan="3">材料形成时间</th>
            <th rowspan="2">页数</th>
            <th rowspan="2">备注</th>
        </tr>
    </thead>
    <tbody>
        <tr v-for="(item, index) in data" :key="index">
            <td>{{ index + 1 }}</td>
            <td>{{ item.label }}</td>
            <td>{{ item.children ? item.children[0].label : '' }}</td>
            <td>{{ item.children ? item.children[0].children ? item.children[0].children[0].label : '' : '' }}</td>
            <td>{{ item.children ? item.children[1].label : '' }}</td>
            <!-- 在这里继续添加其他列 -->
        </tr>
    </tbody>
</table>

在上述代码中,我使用了 Vue 的插值语法 {{ }} 来显示数据。我还使用了 v-for 来迭代 data 数组并为每个元素创建一个新的行。

需要注意的是,这个代码片段假设 item.children 是一个数组,且至少包含两个元素。如果 item.children 的数量是不固定的,那么你可能需要对代码进行一些修改以适应这种情况。例如,你可以使用条件语句来检查 item.children 是否为空,并据此来决定是否显示特定的列。

2 个回答

先把 tree 拍平成 arr,然后在 v-for 即可

不然就等用递归组件了,感觉不如直接用 js 递归好数据,然后 v-for

如果确定只有两层,可以循环template生成

<template v-for="(item,index) in data" :key="item.label">
    <tr v-for="(item,index) in 20" :key="index">
        <td>{{index}}、</td>
        <td>{{item.label}}</td>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
    </tr>
    <tr v-for="(citem,cindex) in item.children" :key="citem.label">
        <td>{{cindex}}、</td>
        <td>{{citem.label}}</td>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
    </tr>
</template>
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏