秋葵好好吃 2022-10-20 10:20 采纳率: 33.3%
浏览 295
已结题

vue结合antd表格怎么展示一个嵌套多层的数组呢


dataSource: [{ key1: '第一列数据1', key2: [{ key3: '第二列数据1' }, { key3: '第二列数据2' }] }, { key1: '第一列数据2', key2: [{ key3: '第二列数据1' }, { key3: '第二列数据2' }] }]

上面这个嵌套了好几层的数组, 要怎么实现下图这个效果呢? 不能用嵌套子表格(也就是expandedRowRender), 必须是下图这种一模一样的效果
#vue #antd

img

  • 写回答

2条回答 默认 最新

  • 秋葵好好吃 2022-10-26 09:57
    关注

    最终是这样解决了
    要对数据做扁平化处理...

    <template>
      <div>
        <a-table :columns="columns" :data-source="newDataSource" bordered></a-table>
        <button @click="flat">
          点我
        </button>
      </div>
    </template>
    
    <script>
    export default {
      data() {
        return {
          dataSource: [
            {
              key1: "第一列数据1",
              key2: [{ key3: "第二列数据1" }, { key3: "第二列数据2" }],
            },
            {
              key1: "第一列数据2",
              key2: [{ key3: "第二列数据1" }, { key3: "第二列数据2" }],
            },
          ],
          columns: [
            {
              title: "第一列",
              dataIndex: "key1",
              customRender: (text) => {
                return { 
                    children:text.record.key1,
                    attrs: { rowSpan: text.record.titleSpan } 
                };
              },
            },
            {
              title: "第二列",
              dataIndex: "key3",
            },
          ],
          newDataSource: [],
        };
      },
    
      methods: {
        flat() {
          let arr = [];
          this.dataSource.map((arrItem) => {
            let type = true;
            const length2 = arrItem.key2.length; //key2数组的长度
            arrItem.key2.map((key2Item) => {
              arr = [
                ...arr,
                {
                  key1: arrItem.key1,
                  key3: key2Item.key3,
                  titleSpan: Number(`${type ? length2 : 0}`),
                  // twoSpan:index === 0 ? length2 : 0,
                },
              ];
              type = false;
              return arr;
            });
          });
          this.newDataSource = arr;
          console.log(this.newDataSource);
        },
      },
    };
    </script>
    
    <style lang="less" scoped></style>
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月17日
  • 已采纳回答 11月9日
  • 创建了问题 10月20日

悬赏问题

  • ¥50 易语言把MYSQL数据库中的数据添加至组合框
  • ¥20 求数据集和代码#有偿答复
  • ¥15 关于下拉菜单选项关联的问题
  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况