1.参考官网给的写法示例和效果图:
<template>
<div>
<el-table
:data="tableData1"
style="width: 100%"
row-key="id"
border
lazy
:load="load"
:tree-props="{children: 'children', hasChildren: 'hasChildren'}">
<el-table-column
prop="date"
label="日期"
width="180">
</el-table-column>
<el-table-column
prop="name"
label="姓名"
width="180">
</el-table-column>
<el-table-column
prop="address"
label="地址">
</el-table-column>
</el-table>
</div>
</template>
<script>
export default {
data() {
return {
tableData1: [{
id: 1,
date: '2016-05-02',
name: '王小虎',
address: '上海市普陀区金沙江路 1518 弄'
}, {
id: 2,
date: '2016-05-04',
name: '王小虎',
address: '上海市普陀区金沙江路 1517 弄'
}, {
id: 3,
date: '2016-05-01',
name: '王小虎',
address: '上海市普陀区金沙江路 1519 弄',
hasChildren: true
}, {
id: 4,
date: '2016-05-03',
name: '王小虎',
address: '上海市普陀区金沙江路 1516 弄'
}]
}
},
methods: {
load(tree, treeNode, resolve) {
setTimeout(() => {
resolve([
{
id: 31,
date: '2016-05-01',
name: '王小虎',
address: '上海市普陀区金沙江路 1519 弄'
}, {
id: 32,
date: '2016-05-01',
name: '王小虎',
address: '上海市普陀区金沙江路 1519 弄'
}
])
}, 1000)
}
},
}
</script>
2.相关参数说明
row-key | 行数据的 Key,用来优化 Table 的渲染;在使用 reserve-selection 功能与显示树形数据时,该属性是必填的。类型为 String 时,支持多层访问:user.info.id ,但不支持 user.info[0].id ,此种情况请使用 Function 。 | Function(row)/String | — | — |
lazy | 是否懒加载子节点数据 | Boolean | — | — |
load | 加载子节点数据的函数,lazy 为 true 时生效,函数第二个参数包含了节点的层级信息 | Function(row, treeNode, resolve) | — | — |
tree-props | 渲染嵌套数据的配置选项 | Object | — | { hasChildren: 'hasChildren', children: 'children' } |
row-key每条数据的唯一标识,类似id。如果出现某一条数据既是父级又是子级的情况,在点击其中一条数据时,相同id的另一条数据也会展开并获取其子级数据,这种情况需要增加单独的标识用于该属性以保证每条数据的唯一性,可以通过父级_子级id拼接方式,后续点击操作的时候方便传父级的id值给到后台;
load方法用于加载子级数据,示例中是利用定时器抛出模拟数据达到懒加载的效果,实际项目中需要请求后台拿到数据并resolve;
tree-props用于配置数据,其中hasChildren为是否有子节点,children为子节点数据名称,这两个根据项目数据结构配置即可。
以上几个属性大家多注意多检查多调整,祝成功!
最后,如有疑问或者不准确的地方欢迎大家留言私信!感谢~