vue使用element的table表格prop的数据是数组的问题 formatter解决

7 篇文章 1 订阅
4 篇文章 0 订阅

一般我们在项目开发中使用的表格大多是ui组件库里面的,一般都是一个prop对应一个字符串,但有的时候产品设计需要一个字段下面展示很多的数据,这个时候得做处理了
如下,要求一个表格里面展示很多的人名,后端返回的数据是数组形式的,这个时候需要前端做一下处理,比如给人名之间加一个逗号之类的
我使用的是element table 里面的formatter 具体如下

    <div style="width:50vw">
      <el-table :data="tableData" style="width: 100%">
        <el-table-column prop="date" label="日期" width="180"></el-table-column>
        <el-table-column prop="name" label="姓名" width="180"></el-table-column>
        <el-table-column prop="address" label="地址"></el-table-column>
        <el-table-column prop="person" label="人员2" :formatter="formatData"></el-table-column>
      </el-table>
    </div>Ï
  data() {
    return {
      tableData: [
        {
          date: "2016-05-02",
          name: "王小虎",
          address: "上海市普陀区金沙江路 1518 弄",
          person: ["姐姐", "妹妹", "哥哥"]
        },
        {
          date: "2016-05-04",
          name: "王小虎",
          address: "上海市普陀区金沙江路 1517 弄",
          person: ["姐姐", "妹妹"]
        },
        {
          date: "2016-05-01",
          name: "王小虎",
          address: "上海市普陀区金沙江路 1519 弄",
          person: ["姐姐", "妹妹", "哥哥"]
        },
        {
          date: "2016-05-03",
          name: "王小虎",
          address: "上海市普陀区金沙江路 1516 弄",
          person: ["姐姐", "妹妹"]
        }
      ]
    };
  },
  methods: {
    formatData(row) {
      let rowPerson = (row && row.person) || [];
      let arr = [];
      rowPerson.forEach(item => {
      //如果数据特别多的话,还可以在这里加if判断,仅展示规定的数据
        arr.push(item);
      });
      //
      return arr.join(",");
    }
  },

如图在这里插入图片描述
这里用的是element table里面提供的格式化的方法 formatter

在这里插入图片描述

element 文档

Vue3中,`el-table`组件是Element UI库中的一个用于展示表格的强大工具,它特别适合处理数据驱动的界面。当你有一个二维对象数组(即每个元素是一个包含多个键值对的对象,数组内部再包含这样的对象)时,可以按照以下步骤来设置和渲染: 1. **数据准备**: 假设你有一个这样的二维对象数组: ```javascript const tableData = [ { id: 1, name: '张三', age: 25, address: { city: '北京', district: '朝阳区' } }, ... // 更多对象 ]; ``` 2. **模板结构**: 使用`v-for`指令遍历每一行数据,并嵌套遍历对象内的属性: ```html <template> <el-table :data="tableData"> <el-table-column prop="id" label="ID"></el-table-column> <el-table-column prop="name" label="姓名"></el-table-column> <!-- 如果有嵌套对象,可以添加嵌套列 --> <el-table-column prop="address.city" label="城市"></el-table-column> <el-table-column prop="address.district" label="区域"></el-table-column> </el-table> </template> ``` 3. **响应式绑定**: 确保你在Vue实例上已经创建了`tableData`变量,并且通过`<script>`标签将其注入到组件中,或者作为计算属性或watch监听变化。 4. **动态列名**: 如果需要显示动态的列名,可以在`column`里使用`formatter`属性: ```html <el-table-column v-for="(item, index) in objectKeys(tableData[0])" :key="index" :prop="item" :label="item" :formatter="formatNestedColumn"></el-table-column> ``` `formatNestedColumn`函数可以进一步处理嵌套对象的字符串显示。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值