首页 > 编程 > JavaScript > 正文

VUE2.0+ElementUI2.0表格el-table循环动态列渲染的写法详解

2019-11-19 12:26:40
字体:
来源:转载
供稿:网友

先看看ElementUI里关于el-table的template数据结构:

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

再看看ElementUI里关于el-table的data数据结构:

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

那么问题来了,如果有很多prop怎么办?比如几百个?那就要用到循环结构了,获取到data数据之后,template的代码可以这样改:


请忽略上图代码中的其他参数,看v-for指令,里面的positionList对应的是el-table 里 :data="tableData",把它的任意数组里对象的key取出来就好了

细心的小伙伴已经发现了,我还用了动态的width,为了解决不同字数长度的表头折行显示的问题,这里的数据存在了positionKey的对象里,专门用来匹配到途中代码通过v-for循环对应的index(key)一致,从而获取到对应的width,为了方便使用,positionKey的数据结构是这样的:

export const positionKey= { key1: {  title: '表头对应的文字1',  width: 100 }, key2: {  title: '表头对应的文字2',  width: 120 }, key3: {  title: '表头对应的文字3',  width: 110 },}

这种数据结构也为后期的自定义拖拽配置动态列做了预备~

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表