Vue实现数据表格合并列行宽效果

  

<强>背景

  

现实中会遇到很多需求,合并列,例如要显示一个名学生的各门课程成绩。

  

 Vue实现数据表格合并列行宽效果

  

<强> html实现

  

使用html实现是比较简单的,利用表标签的行宽属性即可,代码如下:

        & lt; table>   & lt; thead>   & lt; tr>   & lt; th>姓名& lt;/th>   & lt; th>课程数& lt;/th>   & lt; th>课程名称& lt;/th>   & lt; th>成绩& lt;/th>   & lt;/tr>   & lt;/thead>   & lt; tbody>   & lt; tr>   & lt; td行宽=?”比;   张三   & lt;/td>   & lt; td行宽=?”比;   3.   & lt;/td>   & lt; td>语文& lt;/td>   & lt; td> 100 & lt;/td>   & lt;/tr>   & lt; tr>   & lt; td>数学& lt;/td>   & lt; td> 90 & lt;/td>   & lt;/tr>   & lt; tr>   & lt; td>英语& lt;/td>   & lt; td> 80 & lt;/td>   & lt;/tr>   & lt;/tbody>   & lt;/table>      

<强>数据结构

  

在实际工程中,表格数据一般来自后端,以json格式发送到前端后,学生和课程是一对多的关系,json格式数据结构如下:

        (   {   名称:“张三”,   课程:[   {   名称:“语文”,   得分:‘100’   },   {   名称:“数学”,   得分:‘90’   },   {   名称:“英语”,   得分:‘80’   }   ]   }   )      

<强> Vue实现

  

我们对比表格结构和json数据结构,分析出结论如下:

  

1。实际上每个课程对应表格的一行
  2.如果是第一列第二列(学生姓名,学生课程数),则应设置其行宽值为该学生拥有的课程数
  3.如果是第一列第二列,则每个学生只需要输出1次该列,因为需要按学生合并列后展示。
  

  

分析完1 - 3条后,代码实现也就简单了:

        & lt; html>      & lt; head>   & lt; style>   th {   边界:1 px固体黑色;   宽度:100 px;   }      td {   边界:1 px固体黑色;   }   & lt;/style>   & lt;/head>      & lt; body>   & lt; div id=坝τ谩北?   & lt; table>   & lt; thead>   & lt; th>姓名& lt;/th>   & lt; th>课程数& lt;/th>   & lt; th>课程名称& lt;/th>   & lt; th>成绩& lt;/th>   & lt;/thead>   & lt; tbody>   & lt;模板v="(项目、索引)学生”在   & lt; tr v=癷tem.courses (m i)”在   & lt; !——第1列每个学生只需要展示1次——比;   & lt; td v=拔?=0”:行宽=癷tem.courses.length”比;   {{item.name}}   & lt;/td>   & lt; !——第2列每个学生只需要展示1次——比;   & lt; td v=拔?=0”:行宽=癷tem.courses.length”比;   {{item.courses.length}}   & lt;/td>   & lt; td> {{m.name}} & lt;/td>   & lt; td> {{m.score}} & lt;/td>   & lt;/tr>   & lt;/template>   & lt;/tbody>   & lt;/table>   & lt;/div>   & lt;脚本src=" https://cdn.bootcss.com/vue/2.6.10/vue.js "祝辞& lt;/script>   & lt; script>   var vm=new Vue ({   埃尔:“#应用”,   数据:{   学生:(   {   名称:“张三”,   课程:[   {   名称:“语文”,   得分:‘100’   },   {   名称:“数学”,   得分:‘90’   },   {   名称:“英语”,   得分:‘80’   }   ]   },   {   名称:“李四”,   课程:[   {   名称:“语文”,   得分:‘100’   },   {   名称:“数学”,   得分:‘90’   }   ]   }   ]   }   });   & lt;/script>   & lt;/body>      & lt;/html>      

效果:   

 Vue实现数据表格合并列行宽效果

  

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

Vue实现数据表格合并列行宽效果