ElementUI表格的动态渲染

2023-11-10

在ElementUI官方文档中,描述的动态渲染只是单纯的将已知字段名称的JSON数据通过prop属性填充到页面中,下为官方文档内容

 <template>
    <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>
  </template>

  <script>
    export default {
      data() {
        return {
          tableData: [{
            date: '2016-05-02',
            name: '王小虎',
            address: '上海市普陀区金沙江路 1518 弄'
          }, {
            date: '2016-05-04',
            name: '王小虎',
            address: '上海市普陀区金沙江路 1517 弄'
          }, {
            date: '2016-05-01',
            name: '王小虎',
            address: '上海市普陀区金沙江路 1519 弄'
          }, {
            date: '2016-05-03',
            name: '王小虎',
            address: '上海市普陀区金沙江路 1516 弄'
          }]
        }
      }
    }
  </script>

其中,表格的key值都是固定的。但是针对key值不固定的json数据的渲染,官方文档并未给出明确信息。最近在写项目的时候涉及到的一项需求就是把后台请求到的json数据渲染到页面,但key值并不固定,导致不能按照官方文档提出的方式进行直接渲染。在网上搜索element表格动态渲染获取到的数据大部分都是复制的官方文档,与本次需求无关。
附上一篇本文参考的文档 https://blog.csdn.net/Ricky110/article/details/78924688
基于文档作者的思路,初次对代码编辑如下

//HTML
<el-table :data="tableList"  v-loading="loading">
        <el-table-column :label="head" v-for="(head, key) in header" :key="head">
            <template slot-scope="scope">
                {{tableList[scope.$index][key]}}
            </template>
        </el-table-column>
</el-table>
                executeSql(sql).then(res => {
                    this.loading = false
                    if(res.status == 'failure') {
                        //...
                    } else {
                        //编辑表头数据
                        this.header = [];
                        for(var i in res.data[0]) {
                            this.header.push(i)
                        }
                        //编辑内容数据
                        for(var i in res.data) {
                            var arr = [];
                            for(var j in res.data[i]) {
                                arr.push(res.data[i][j])
                            }
                            this.tableList.push(arr)
                        }
                    }

基本原理就是获取到JSON数据后分割成表头和内容两部分,动态渲染表头,同时将内容进行填充。
但考虑到方式略有点繁琐,思考后后对代码简化如下

//HTML
<el-table :data="tableList2" v-loading="loading">
        //此处v-for循环仍针对表头 
        <el-table-column :label="key" v-for ="(value,key) in tableList2[0]"  :key="key" >
            <template slot-scope="scope">
                     //填充内容
                    <span>{{scope.row[key]}}</span>
            </template>
        </el-table-column>
</el-table>
                executeSql(sql).then(res => {                   
                    this.loading = false
                    if(res.status == 'failure') {
                        //....
                    } else {
                        //直接复制 在页面进行表头渲染
                        this.tableList2 = res.data
                    }
                })

虽然基本功能可以实现,然而elementui表格宽度自适应以及其提供的诸如排序等功能无法使用,考虑可能是由于仅循环表头导致。由于初次使用Element,能力有限,暂未想到更好的解决办法,所以本文仅供参考。假设有读者能解决刚才提到的排序等问题或者有更好的解决动态渲染表格的办法请及时回复,不胜感激。。。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ElementUI表格的动态渲染 的相关文章

随机推荐

  • JavaScript 中使用Ajax进行网络post请求和get请求

    博主前些天发现了一个巨牛的人工智能学习网站 通俗易懂 风趣幽默 忍不住也分享一下给大家 点击跳转到网站 前言 使用Ajax进行网络请求 默认是异步请求 而且不需要刷新页面 就可以发送请求 获取服务端返回来的数据 一 Ajax的get请求 做
  • apache kafka配置中request.required.acks含义

    Kafka producer的ack有3中机制 初始化producer时的producerconfig可以通过配置request required acks不同的值来实现 0 这意味着生产者producer不等待来自broker同步完成的确
  • 算法--大数开方

    之前已找到比较好的大数乘法算法 现在我们来解决大数开方问题 如有大数n 求其开方x 则x与n必满足x x n 也就是说我们能遍历x找到n的开方 但是问题在于我们是不可能对大数遍历的 如果我们可以确定它的大致范围 仅仅测试几个不容易直接判断的
  • SpringBoot使用Rabbit多消费者削峰

    文章目录 场景 配置 生产者发送消息 消费者处理消息 场景 前端系统推送大批量数据进入我方系统进行处理 为了减轻我方系统的压力 并且充分发挥服务器的性能 提高处理效率 于是使用 Rabbit 做了限流处理 同时有多线程运行多个消费者处理任务
  • QGraphicsItem的缩放

    QGraphicsItem的缩放 QgarphicsItem是Qt视图体系中的项 QGraphicsItem本身是不支持鼠标拖动来缩放的 本文介绍如何通过更改鼠标事件来修改项的大小 本文所用Qt版本为Qt4 8 下文代码实现的功能为 按住s
  • LLVM+clang+VS Code 搭建 C++ 编译环境(windows)

    可参考LLVM clang VS Code 搭建 C 编译环境 windows
  • Bluetooth 蓝牙介绍(七):逻辑链路控制和适配协议规范(L2cap 协议)

    文章目录 前言 L2CAP 特性 前提 术语 常规操作 通道标识符 操作模式 数据包格式 CONNECTION ORIENTED CHANNELS IN BASIC L2CAP MODE CONNECTIONLESS DATA CHANNE
  • 【C++】返回值是类名和返回值是引用的区别

    返回非引用类型 函数的返回值用于初始化在调用函数时创建的临时对象 temporary object 如果返回类型不是引用 在调用函数的地方会将函数返回值复制给临时对象 在求解表达式的时候 如果需要一个地方存储其运算结果 编译器会创建一个没命
  • js中动态获取页面的script地址,并动态给他添加script标签和地址,解决页面白屏问题

    前言 业务逻辑 在vue中 遇到这样的情况 初始化加载太多js 导致页面白屏 为了解决这个情况 决定使用具体组件具体加载相应的cdn地址 为啥不用vue的按需加载呢 是因为我们项目对性能要求很高 但是按需加载后 引入的插件包 打包以后的大小
  • 3.1静态测试基础

    与需要运行被测软件的动态测试不同 静态测试依赖于对工作产品的手工检查 即评审 或对代码或其他工作产品的工具驱动的评估 即静态分析 静态测试的两种类型都评估代码或被测的其他工作产品 而不是实际运行被测代码或工作产品 静态分析对于安全关键的计算
  • 一个 shfl sync __shfl_up_sync 的示例

    一个 shfl sync 的小示例 v100测试 include
  • 【java】【SpringBoot】【一】基础篇 SpringBoot工程创建和实现ssm/ssmp整合

    目录 一 快速上手SpringBoot 1 创建SpringBoot入门程序 1 1 创建一个empty Project 1 2 查看maven版本 配置 1 3 创建模块 springboot选择Spring Initializr 1 4
  • 八分量基于区块链技术赋能我国工业互联网建设

    id BSN 2021 公众号 BSN研习社 经区块链服务网络发展联盟官方审核批准 北京八分量信息科技有限公司正式成为区块链服务网络 Blockchain based Service Network 简称 BSN 合格开发者 随着八分量加入
  • [转自:QQ首页 > 腾讯科技 > 人物 > 正文]金蝶中间件袁红岗:JavaEE5.0是另一震撼

    被业界称为 中国Java第一人 的金蝶中间件首席科学家袁红岗认为 Java EE 5 0 来得并不晚 可能是J2EE诞生以来比较重量级的一次震撼 在中国Java技术界 袁红岗是一个不能忽视的名字 他的观点 及对中间件趋势的看法 是很多人感兴
  • 解决CMake Error: The source directory "*" does not appear to contain CMakeLists.txt.

    Hi 大家好 我是钟义林 昨儿个安装mysql 遇到了几个问题 现在打算把问题的解决方法写出来 和大家分享一下 这次我就不截图了 下面大家一起看一下 问题 一 CMake Error The source directory opt mys
  • 开源项目SMSS发开指南(四)——SSL/TLS加密通信详解

    本文将详细介绍如何在Java端 C 端和NodeJs端实现基于SSL TLS的加密通信 重点分析Java端利用SocketChannel和SSLEngine从握手到数据发送 接收的完整过程 本文也涵盖了在Ubuntu系统上利用OpenSSL
  • springBoot的序列化与反序列化

    springboot中的序列化与反序列化有一个相对比较复杂的转换过程 它主要是HTTP请求 响应的信息类型转换 包含编码 信息类型 信息转换器 注解方法的处理适配器 请求接收的信息处理器等等 我们就先从大家常用的RequestBody和Re
  • java知识结构

    基础 1 java概述 2 搭建运行环境 3 java基本语法 常变量 数据类型 运算符 标识符与关键字 4 流程控制 5 eclipse开发工具 6 面向对象编程 类和对象 包 继承 this super关键字 多态 重载 重写 抽象类f
  • systemverilog中的bind

    最早接触 bind 关键字是在assertion 当中 将assertion 与 dut 进行绑定连接 如下例子 bind cpu fpu props fpu rules 1 a b c cpu 是module 名字 fpu props 是
  • ElementUI表格的动态渲染

    在ElementUI官方文档中 描述的动态渲染只是单纯的将已知字段名称的JSON数据通过prop属性填充到页面中 下为官方文档内容