最近遇到一个棘手的问题,Ant的嵌套表格,点击一行显示子表格的相关数据,展开其他行,共享数据源,便会使所有展开的行显示相同数据!
在上网找了很多解决办法,试过都不行,Ant也没有仅展开当前行的例子,改变数据源有点复杂,所以我采取的是点击哪行就只展开该行,关闭其他行,视图上就不会影响用户体验!
话不多说,直接上代码:
查阅了Ant的表格API,expandedRowKeys展开的行,控制属性
第一步:在表格中加上expandedRowKeys控制展开行的数据
<a-table ref='saleTable' :columns="columns" expandRowByClick(点击行展开) :expandedRowKeys="openRowKeys"(展开哪一行) rowKey="SaleId"(row的唯一标识,这个很关键) @expand="expand"(点击图标展开)>
</a-table>
第二步:在data中定义openRowKeys
data(){
return{
openRowKeys:"[]",
}
}
第三步:在data中定义openRowKeys
//点击行
expand(expanded, record) {
this.openRowKeys="[]"; //关闭其他行
if (expanded) {
//去发送接口,展开items
this.openRowKeys=`"[${record.SaleId}]"`;
this.$api.saleitems(record.SaleId).then(res => {
调axios接口,渲染子表格数据
});
}
}
问题就解决啦,就可以只展开一行,实现手风琴效果啦~~~