vue 可合并表格组件_Vue实现数据表格合并列rowspan效果

背景

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

html实现

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

姓名课程数课程名称成绩

张三

3

语文100数学90英语80

数据结构

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

[

{

name: '张三',

courses: [

{

name: '语文',

score: '100'

},

{

name: '数学',

score: '90'

},

{

name: '英语',

score: '80'

}

]

}

]

Vue实现

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

1.实际上每个课程对应表格的一行

2.如果是第一列第二列(学生姓名、学生课程数),则应设置其rowspan值为该学生拥有的课程数

3.如果是第一列第二列,则每个学生只需要输出1次该列,因为需要按学生合并列后展示。

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

th {

border: 1px solid black;

width: 100px;

}

td {

border: 1px solid black;

}

姓名课程数课程名称成绩

{{item.name}}

{{item.courses.length}}

{{m.name}}{{m.score}}

var vm = new Vue({

el: "#app",

data: {

students: [

{

name: '张三',

courses: [

{

name: '语文',

score: '100'

},

{

name: '数学',

score: '90'

},

{

name: '英语',

score: '80'

}

]

},

{

name: '李四',

courses: [

{

name: '语文',

score: '100'

},

{

name: '数学',

score: '90'

}

]

}

]

}

});

效果:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值