ElementUI table表格列动态渲染

向右看齐 2023-01-17 08:25 555阅读 0赞

一、概述

一般写table时,列都是固定。现有业务需求,列是不固定的。根据api返回的数据,进行动态渲染。

官方table示例,链接如下:

https://element.eleme.cn/#/zh-CN/component/table

二、实现

在此基础上,增加tableHeader 变量,用来动态渲染。

test.vue

  1. <template>
  2. <div class="root">
  3. <el-table
  4. :data="tableData"
  5. style="width: 100%"
  6. :fit='true'
  7. :default-sort="{prop: 'date', order: 'descending'}"
  8. >
  9. <el-table-column :prop="index" :label="item" sortable show-overflow-tooltip v-for="(item, index) in tableHeader"
  10. :key="index">
  11. </el-table-column>
  12. </el-table>
  13. </div>
  14. </template>
  15. <script>
  16. export default {
  17. name: "test",
  18. data() {
  19. return {
  20. tableHeader: {
  21. date: "日期",
  22. name: "姓名",
  23. address: "地址",
  24. },
  25. tableData: [{
  26. date: '2016-05-02',
  27. name: '王小虎',
  28. address: '上海市普陀区金沙江路 1518 弄',
  29. }, {
  30. date: '2016-05-04',
  31. name: '王小虎',
  32. address: '上海市普陀区金沙江路 1517 弄',
  33. }, {
  34. date: '2016-05-01',
  35. name: '王小虎',
  36. address: '上海市普陀区金沙江路 1519 弄',
  37. }, {
  38. date: '2016-05-03',
  39. name: '王小虎',
  40. address: '上海市普陀区金沙江路 1516 弄',
  41. }]
  42. }
  43. },
  44. methods: {
  45. formatter(row, column) {
  46. return row.address;
  47. }
  48. }
  49. }
  50. </script>
  51. <style scoped>
  52. .root {
  53. margin: 20px 25px 0px 25px;
  54. }
  55. </style>

效果如下:

a8599b39950c0a3fb9ea1df986cc9aee.png

说明:

修改tableHeader 和tableData,注意对应关系即可。

:fit=’true’ 宽度自适应

sortable 排序

show-overflow-tooltip 当内容过长被隐藏时显示

再增加2列,修改修改tableHeader 和tableData

  1. <template>
  2. <div class="root">
  3. <el-table
  4. :data="tableData"
  5. style="width: 100%"
  6. :fit='true'
  7. :default-sort="{prop: 'date', order: 'descending'}"
  8. >
  9. <el-table-column :prop="index" :label="item" sortable show-overflow-tooltip v-for="(item, index) in tableHeader"
  10. :key="index">
  11. </el-table-column>
  12. </el-table>
  13. </div>
  14. </template>
  15. <script>
  16. export default {
  17. name: "test",
  18. data() {
  19. return {
  20. tableHeader: {
  21. date: "日期",
  22. name: "姓名",
  23. address: "地址",
  24. age:"年龄",
  25. phone:"电话",
  26. },
  27. tableData: [{
  28. date: '2016-05-02',
  29. name: '王小虎',
  30. address: '上海市普陀区金沙江路 1518 弄',
  31. age:18,
  32. phone:"12345678910",
  33. }, {
  34. date: '2016-05-04',
  35. name: '王小虎',
  36. address: '上海市普陀区金沙江路 1517 弄',
  37. age:19,
  38. phone:"12345678911",
  39. }, {
  40. date: '2016-05-01',
  41. name: '王小虎',
  42. address: '上海市普陀区金沙江路 1519 弄',
  43. age:20,
  44. phone:"12345678912",
  45. }, {
  46. date: '2016-05-03',
  47. name: '王小虎',
  48. address: '上海市普陀区金沙江路 1516 弄',
  49. age:21,
  50. phone:"12345678913",
  51. }]
  52. }
  53. },
  54. methods: {
  55. formatter(row, column) {
  56. return row.address;
  57. }
  58. }
  59. }
  60. </script>
  61. <style scoped>
  62. .root {
  63. margin: 20px 25px 0px 25px;
  64. }
  65. </style>

效果如下:

f0c00e58e4ea7231ae298c38d3f477af.png

本文参考链接:

https://www.jianshu.com/p/064a49f1752c

发表评论

表情:
评论列表 (有 0 条评论,555人围观)

还没有评论,来说两句吧...

相关阅读