vue列表tree-props懒加载实现,vue普通表格改为树结构显示,el-table树实现点击添加下级节点
vue普通表格改为树结构显示,在普通表格基础上添加如下粗体字部分标签即可:
1、VUE中列表代码
<el-table ref="tableRef" :data="state.dataList" v-loading="state.loading" row-key="id" lazy :load="loadNode" :tree-props="{ children: 'children', hasChildren: 'hasChildren' }" :cell-style="tableStyle.cellStyle" :header-cell-style="tableStyle.headerCellStyle" @selection-change="selectionChangHandle" @sort-change="sortChangeHandle" @row-click="clickRowLoad" > <el-table-column type="selection" width="40" align="center" /> <el-table-column type="index" label="#" width="40" /> </el-table>
lazy
: 懒加载hasChild
: 是否有子节点,值应为布尔值。为true则加载childrenloadMethod
: 实现加载子节点的方式
2、关键函数代码
const loadNode = (tree, node, resolve) => { // 加载 树数据 let params = {parentId : tree.id}; platformClassificationTree(Object(params)).then((res) => { if(res.data.length){ resolve(res.data); }else{ resolve([]) // 加上这个,防止在该节点没有子节点时一直转圈的问题发生。 } }); }
3、后台接口数据结构:默认加载一级节点后,发现节点即使有下级子节点,前面的打开箭头不显示,于是在返回一级节点数据结构中添加hasChildren=true解决
4、vue配置tree页面点击文字也能打开下级节点
需添加事件:@row-click="clickRowLoad"
// 点击展开节点 const clickRowLoad = (row, column, event) => { if(!row.children || row.children.length==0){ platformClassificationTree(Object({ parentId: row.id })).then((res) => { row.children=res.data; }); } if (event.currentTarget.querySelector(".el-table__expand-icon")) { event.currentTarget.querySelector(".el-table__expand-icon").click(); } }
children
: 映射的要加载的子节点集合
1、所有文章未经授权禁止转载、摘编、复制或建立镜像,如有违反,追究法律责任。
2、本站文章部分来源注册用户发布或互联网收集而来,若有侵权,请邮件联系作者。
邮箱地址:wtao219@qq.com
2、本站文章部分来源注册用户发布或互联网收集而来,若有侵权,请邮件联系作者。
邮箱地址:wtao219@qq.com
THE END
二维码