el-Table表格树形数据懒加载

树形数据懒加载:

 代码部分:

然后端配合给出适合的数据,然后把配置项写好,就可以直接渲染了

 <el-table
      :data="tableData"
      border
      height="640"
      style="width: 100%"
      row-key="category_id" // 绑定的每行key值
      :lazy="lazy"  // 布尔值 是否开启懒加载函数
      :load="load"  // 懒加载事件
      :default-expand-all="defaultExpandAll" // 布尔值是否展开所有
      :tree-props="{ children: 'children',hasChildren: 'hasChildren' }" 
      // 如果有children就渲染第二层 如果有 hasChildren 为true就加载事件渲染第二层
      // 以此类推
    >
 </el-table>

 <script>
    export default{
        data(){
            return{
                defaultExpandAll: false, // 展开所有
                lazy: true,    // 开启加载       
            }  
        methods:{
            load(tree, treeNode, resolve) {
                // tree 点击的当前行row
                // treeNode 点击当前行的子
                // resolve 当前行回调函数 渲染表格
               setTimeout(() => {
                    let params={
                          category_id:"", // 类目id
                          level:tree.level, // 第几级
                          status:tree.status, // 状态
                          attr_name:tree.attr_name?tree.attr_name:"", // 材质
                          parent_id:tree.category_id, // 父类id 也是请求下一级的标识id
                     }
               CategoryListData(params).then((res)=>{ // 第二层 数据请求
                      let arr=[]
                     res.data.list.forEach(item => {
                               arr.push({
                               // 第二层对应的返回字段
                               category_id:item.category_id,
                               category_name:item.category_name,
                               level:item.level,
                               code:item.code,
                               status:item.status, 
                               hasChildren:item.hasChildren, 
                             // 第二层必须返回hasChildren为true 才能展开第二层 开始懒加载
                               })                            
                               resolve(arr) // 返回数组给第二层渲染
                                 })
                                })
                         }, 1000)
                  }            
            }      
        }
 </script>
Element UI的`el-table`组件中,如果你想实现树形结构的默认展开并采用懒加载策略,你需要配合`el-tree`组件一起使用,并在数据加载时动态控制节点状态。以下是基本步骤: 1. 首先,确保你在表格组件中引用了`<el-tree>`元素,并设置了它的属性,如`data`(初始数据源)、`props`(节点属性配置)和`default-expand-all`(是否默认展开所有节点)。 ```html <template> <div> <el-table :data="tableData" @expand-change="handleExpandChange"> <!-- ...其他el-table的配置... --> <el-tree ref="tree" :props="treeProps" :load="loadNode" default-expand-all ></el-tree> </el-table> </div> </template> ``` 2. 定义`tableData`,它是一个数组,其中每个对象包含`children`属性(用于表示子节点)和`expandStatus`属性(用于记录节点是否已展开),初始值可能是未展开的。 ```js data() { return { tableData: [ { id: '1', name: '父节点1', expandStatus: false, children: [] }, { id: '2', name: '父节点2', expandStatus: false, children: [] } ], treeProps: { children: 'children', label: 'name' } }; } ``` 3. 实现`loadNode`方法,当用户点击某个节点时,这个方法会被触发,从服务器获取该节点的子节点数据并更新`tableData`。 ```js methods: { loadNode(node) { // 这里模拟异步请求,实际应用中替换为真正的API调用 setTimeout(() => { const loadChildren = node.data.children; // 假设已经获取到子节点数据 node.data.expandStatus = true; node.data.children = loadChildren; this.$refs.tree.updateChildren(node); }, 1000); // 模拟延迟1秒 }, handleExpandChange(expandedKeys) { // 当节点展开或收起时,可以在这里处理其他逻辑 } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值