首先,使用过element-ui的table组建的同学都知道,每次使用的时候表头字段都要一个一个的去写,写起来很麻烦,既不美观又浪费时间,基于以上原因,对table组件进行二次封装,使我们在使用的时候更加简单方便。

这里只是简单的封装,同学们若是感兴趣可以加以完善,若有问题可以一起讨论。

  1. //封装的table组件
  2. <template>
  3. <!-- 列表 -->
  4. <el-table
  5. stripe
  6. :border="border"
  7. :data="dataSource"
  8. @selection-change="handleSelectionChange"
  9. v-loading="listLoading"
  10. @row-dblclick="rowClick"
  11. highlight-current-row
  12. @row-click="clickTable"
  13. ref="refTable"
  14. @expand-change="expandChange"
  15. >
  16. <!--数据源-->
  17. <el-table-column
  18. v-for="(column, index) in columns"
  19. header-align="center"
  20. v-if="column.isShow"
  21. :sortable="column.hasSort"
  22. :key="column.prop"
  23. :prop="column.prop"
  24. :label="column.label"
  25. :align="column.align"
  26. :width="column.width">
  27. </el-table-column >
  28. </el-table>
  29. </template>
  30. <script>
  31. export default {
  32. name:"tables",
  33. props:{
  34. dataSource: {// 表格数据源 默认为空数组
  35. type: Array,
  36. default: ()=> []
  37. },
  38. columns: {// 表格的字段展示 默认为空数组
  39. type: Array,
  40. default: ()=>[]
  41. }
  42. },
  43. components: {
  44. //
  45. },
  46. watch:{
  47. //
  48. },
  49. mounted(){
  50. //
  51. },
  52. methods: {
  53. //
  54. }
  55. }
  56. </script>
  57. <style lang="scss">
  58. //
  59. </style>

封装完成后怎么调用这个组件呢?

  1. //调用封装好的table组件
  2. <template>
  3. //这里仅传入列表数据和表头数据,如有其它需求可以增加传递参数
  4. <tables :dataSource="dataSource" :columns="columns"></tables>
  5. </template>
  6. <script>
  7. import tables from './table.vue' //引入组件
  8. export default {
  9. data() {
  10. return {
  11. dataSource:[{
  12. 'createTime':123,
  13. 'times':123,
  14. 'username':'jj',
  15. 'deptName':'ii',
  16. 'status':'0',
  17. },{
  18. 'createTime':123,
  19. 'times':123,
  20. 'username':'jj',
  21. 'deptName':'ii',
  22. 'status':'0',
  23. },{
  24. 'createTime':123,
  25. 'times':123,
  26. 'username':'jj',
  27. 'deptName':'ii',
  28. 'status':'0',
  29. }],
  30. columns:[{
  31. hasSort: false, //<Boolean> 是否排序
  32. isShow: true, //<Boolean> 是否展示
  33. prop: 'createTime', //<String> 对应属性名
  34. label: '日期', //<String> 表头标签
  35. align: 'center',//表头内容是否居中
  36. width: 200, // 列宽
  37. },{
  38. hasSort: false, //<Boolean> 是否排序
  39. isShow: true, //<Boolean> 是否展示
  40. prop: 'times', //<String> 对应属性名
  41. label: '时间', //<String> 表头标签
  42. align: 'center'//表头内容是否居中
  43. },{
  44. hasSort: true, //<Boolean> 是否排序
  45. isShow: true, //<Boolean> 是否展示
  46. prop: 'username', //<String> 对应属性名
  47. label: '名字', //<String> 表头标签
  48. align: 'center'//表头内容是否居中
  49. },{
  50. hasSort: true, //<Boolean> 是否排序
  51. isShow: true, //<Boolean> 是否展示
  52. prop: 'deptName', //<String> 对应属性名
  53. label: '部门名称', //<String> 表头标签
  54. align: 'center'//表头内容是否居中
  55. },{
  56. hasSort: true, //<Boolean> 是否排序
  57. isShow: true, //<Boolean> 是否展示
  58. prop: 'status', //<String> 对应属性名
  59. label: '状态', //<String> 表头标签
  60. align: 'center'//表头内容是否居中
  61. }
  62. ]
  63. }
  64. },
  65. components: {
  66. tables,//注册table组件
  67. },
  68. watch:{
  69. //
  70. },
  71. mounted(){
  72. //
  73. },
  74. methods: {
  75. //
  76. }
  77. }
  78. </script>
  79. <style lang="scss">
  80. //
  81. </style>

下面是我的公众号二维码,欢迎同学们关注,大家一起学习,一起进步。

对element-ui的table组件的二次封装的更多相关文章

  1. vue问题三:element ui的upload组件上传图片成功和移除事件

    element ui的upload组件上传图片成功和移除事件: 登录后获取到后台传的token存到中: sessionStorage.setItem("token",data.ob ...

  2. Vue+element UI实现分页组件

    介绍 这是一个是基于element-UI的分页组件基础上,进行了二次封装的分页组件,在展示数据时,该分页组件采用了每显示一页数据,只请求当前页面的数据的请求策略,从而避免了一次性将数据全部请求所造成的 ...

  3. vue+element ui项目总结点(二)table合计栏目,按照起始年份--截止年份 插入数据并向后追加数据以最后一条年份+1

    1.oninput 事件在用户输入时触发; <template> <div class="test_box"> <p>hell,你好</p ...

  4. 关于Element UI中select组件中遇到的问题

    问题一:在使用select组件设置多选功能后,窗口抖动问题? 详细描述:在我使用select做多选的功能时出现了窗口抖动的问题,测试的时候发现,在有些人的电脑上抖动,有些人的电脑上不抖,找了很多文档, ...

  5. react ,ant Design UI中table组件合并单元格并展开详情的问题

    需求:购物车订单列表,如图: 一:单元格合并 遇到这种你会怎么办呢?  单元格合并?  还是其他的方法? 下面是我的处理方式,就是在table 组件的columns上处理,这里拿商品举例,其余的类似, ...

  6. 09 - Vue3 UI Framework - Table 组件

    接下来做个自定义的表格组件,即 table 组件 返回阅读列表点击 这里 需求分析 开始之前我们先做一个简单的需求分析 基于原生 table 标签的强语义 允许用户自定义表头.表体 可选是否具有边框 ...

  7. vue+element ui中select组件选择失效问题原因与解决方法

    codejing 2020-07-10 09:13:31  652  收藏 分类专栏: Web Vue Element UI 版权 .当表单form赋完值后,如果后续又对form中某一属性值进行操作如 ...

  8. Bootstrap Blazor Table 组件(二)

    原文链接:https://www.cnblogs.com/ysmc/p/16128206.html 很多小伙伴在使用 Bootstrap Blazor Table组件的时候,都会有这样的一个需求: 我 ...

  9. 基于bootstrap table配置的二次封装

    准备 jQuery js css 引用完毕 开始 如果对bootstrap table 的方法与事件不熟悉: Bootstrap table方法,Bootstrap table事件 <table ...

随机推荐

  1. oracle 快速创建用户

    create user  testdb identified by 123456; grant  dba to testdb;

  2. 【建议收藏】Redis超详细入门教程大杂烩

    写在前边 Redis入门的整合篇.本篇也算是把2021年redis留下来的坑填上去,重新整合了一翻,点击这里,回顾我的2020与2021~一名大二后台练习生 NoSQL NoSQL(NoSQL = N ...

  3. Supervisor多进程管理 异常自动重启 可视化管理

    一.序言 Supervisor是多进程管理工具,在Docker中相关联的进程能够通过supervisor来管理. 微服务项目开发阶段,可用于微服务子项目的启动管理. 支持web可视化管理,能够极大方面 ...

  4. 计算机电子书 2017 BiliDrive 备份

    下载方式 根据你的操作系统下载不同的 BiliDrive 二进制. 执行: bilidrive download <link> 链接 文档 链接 斯坦福 cs224d 深度学习与自然语言处 ...

  5. TensorFlow 2.0 快速入门指南 | iBooker·ApacheCN

    原文:TensorFlow 2.0 Quick Start Guide 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 不要担心自己的形象,只关心如何实现目标.--<原则>,生活 ...

  6. Visual Studio 中快速创建方法 Generate a method in Visual Studio

    2020-04-04 https://docs.microsoft.com/en-us/visualstudio/ide/reference/generate-method?view=vs-2019 ...

  7. 「NOI十联测」奥义商店

    「NOI十联测」奥义商店 若lzz想花费最少的钱,那么显然要选择数目较少的颜色. 先考虑暴力的写法. 每次向两边统计,每个物品要求被买的概率可以由上一个物品推出. now=1;//now 被买概率 M ...

  8. Td 内容不换行,超过部分自动截断,用...表示

    转载请注明来源:https://www.cnblogs.com/hookjc/ <table width="200px" style="table-layout:f ...

  9. iOS 获取通讯录中联系人的所有属性 by - zfqj

    1 ABAddressBookRef addressBook = ABAddressBookCreate(); 2 3 CFArrayRef results = ABAddressBookCopyAr ...

  10. fuzz——AFL基础使用方法

    最近打 ctf 的时候感觉有点遇到瓶颈,就来 fuzz 这块看看. AFL 全称为 American huzzy loop,是 Fuzzing 最高级的测试工具之一.这个工具对有源码和无源码的二进制程 ...