element-ui动态切换表头以及表格里的内容

本文介绍了如何在Vue.js项目中利用Element UI实现动态表头切换和内容切换。通过在el-table-column中循环并设置label和property参数,配合相应的JSON配置,可以完成动态效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前两天因为业务需要需要做动态的表头切换和动态的切换内容,找了找资料后实现了这一效果

因为是活得所以需要在table里面循环el-table-column这个代码并且给他加上你所需的参数如lable以及property这两个比较重要的参数下面是table的配置代码以及你所需要的json也要进行相对应的改变

<el-table

                @cell-click="okdd"

                class="tableX"

                height="150"

                :data="tableData.data"

                :row-class-name="ddddddd"

    style="width: 100%; margin-top: 10px"

              >

                <el-table-column

                  min-width="50"

                  v-for="item in tableData.title"

                  :key="item.key"

                  :property="item.key"

                  :label="item.lable"

                  :show-overflow-tooltip="true"

                >

                  <template slot-scope="scope">

                    <span :class="scope.row[scope.column.property]=='异常'?'redback':''">{{ scope.row[scope.column.property] }}</span>

                  </template>

                </el-table-column>

              </el-table>

 这里是表头的json配置注意这里需要和你的数据的名称需要一致哦

"title": [
      {
        "lable": "设备类型名称",
        "key": "sblxmc"
      },
      {
        "lable": "设备名称",
        "key": "sbmc"
        
      },
      {
        "lable": "设备型号",
        "key": "sbxh"
      },
      {
        "lable": "电压等级",
        "key": "dydj"
      },
      {
        "lable": "所属单元间隔",
        "key": "ssdyg"
      },
      {
        "lable": "SF6气体额定压力",
        "key": "sfqtedyl"
      },
      {
        "lable": "告警状态",
        "key": "gjzt"
      },
      {
        "lable": "告警时间",
        "key": "gjsj"
        
      },
      {
        "lable": "告警原因",
        "key": "gjyy"
      },
      {
        "lable": "造成的影响",
        "key": "zcyx"
      }
    ]

 这里的部分就是数据的json格式了跟一般的json几乎无差距

"data": [
      {
        "sblxmc": "组合电器",
        "sbmc": "5051组合电器",
        "sbxh": "ZHW-550",
        "dydj": "交流500kV",
        "ssdyg": "5051断路器间隔",
        "sfqtedyl": "0.60Mpa",
        "gjzt": "异常",
        "gjsj": "2021/8/16 11:25",
        "gjyy": "低温,SF6气体液化,压力闭锁",
        "zcyx": "存在断路器无法开断的风险"
      },
      {
        "sblxmc": "组合电器",
        "sbmc": "5052开关",
        "sbxh": "ZHW-550",
        "dydj": "交流500kV",
        "ssdyg": "5051断路器间隔",
        "sfqtedyl": "0.60Mpa",
        "gjzt": "异常",
        "gjsj": "2021/8/16 11:25",
        "gjyy": "低温,SF6气体液化,压力闭锁",
        "zcyx": "存在断路器无法开断的风险"
      }
    ],

### Element UI Table 动态显示列 为了实现在Element UI中的`el-table`组件动态显示列的功能,可以采用定义数据源的方式,在JavaScript对象中管理表格的列配置以及对应的数据显示逻辑。通过Vue.js的数据绑定特性来控制哪些列为可见状态。 对于动态调整表格列的情况,通常会创建一个数组用于存储列的信息,每项代一列表格内容描述,包括但不限于标题、宽度、是否固定等属性[^1]: ```javascript data() { return { columns: [ { label: '日期', prop: 'date' }, { label: '姓名', prop: 'name' }, { label: '地址', prop: 'address' } ], tableData: [] }; } ``` 当需要改变某列的状态(比如隐藏或显示),可以通过修改这个数组内的元素或者增删其中的对象达到目的。配合`:columns="columns"`这样的写法让模板部分能够响应这些变化。 另外一种方式是在渲染函数里利用计算属性(computed property),基于某些条件过滤出应该呈现给用户的列集合,并将其传递给`el-table-column`标签作为prop参数使用[^2]。 #### 使用示例 下面是一个简单的例子展示了如何根据用户的选择动态切换要显示的列: ```html <template> <div id="app"> <!-- 表头选择器 --> <el-checkbox-group v-model="selectedColumns"> <el-checkbox v-for="(item, index) in allColumns" :key="index" :label="item.prop">{{ item.label }}</el-checkbox> </el-checkbox-group> <!-- 数据表格 --> <el-table :data="tableData" style="width: 100%"> <el-table-column v-for="(column, idx) in visibleColumns" :key="idx" :prop="column.prop" :label="column.label"></el-table-column> </el-table> </div> </template> <script> export default { data() { return { selectedColumns: ['date'], // 默认选中的列 allColumns: [{ label: '日期', prop: 'date' }, { label: '姓名', prop: 'name' }, { label: '地址', prop: 'address' }], tableData: [ { date: '2016-05-03', name: 'Tom', address: 'No. 189, Grove St, Los Angeles' }, { date: '2016-05-02', name: 'John', address: 'New York No. 1 Lake Park' } ] }; }, computed: { visibleColumns() { return this.allColumns.filter(item => this.selectedColumns.includes(item.prop)); } } }; </script> ``` 此代码片段实现了让用户自行勾选想要查看的列选项,之后依据所选项目更新实际渲染出来的列结构。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值