element el-tree懒加载

  <el-tree
                               :props="props"
                               :load="loadNode"
                               lazy
                               node-key="areaId"
                               :expand-on-click-node="false"
                               ref="asyncTree"
                               @check-change="handleCheckChange"
                               @node-click="hadleNodeClick">
      <span class="custom-tree-node" slot-scope="{ node, data }">
        <span style="display: inline-block;margin-right: 10px">{{ node.label }}</span>
        <span v-if="data.areaId !='root'">
          <el-button
                  type="text"
                  size="medium"
                  @click="() => append(data)">
            新增下级
          </el-button>
               <el-button
                       type="text"
                       size="medium"
                       @click="() => edit(node,data)">
            修改
          </el-button>
          <el-button
                  type="text"
                  size="mini"
                  @click="() => remove(node, data)">
            删除
          </el-button>
        </span>
      </span>
                       </el-tree>

其中 node-key 绑定值为唯一的id,点击时获取到的也是这个值。

props: {
                    label: 'areaName',
                    children: 'zones',
                    isLeaf: 'ext1',
                },

props 绑定的值中,label对应的是显示的文字,isleaf对应为是否有子节点(true/fasle)

    loadNode(node, resolve) {
                if (node.level === 0) {
                    let obj = {
                    }
                    this.findAreaByParentId(obj,resolve)
                }
                if (node.level > 0) {
                    let obj = {
                        "parentId": node.data.areaId,
                        "areaName":node.data.areaName,
                        "subCode":node.data.subCode,
                        "areaNumber":node.data.areaNumber
                    }
                    this.findAreaByParentId(obj,resolve)
                }
            },

loadNode 方法当level的值为0时是第一次默认请求,大于0时是点击时的请求,我这里将resolve作为参数,传递给了请求,然后将请求后得到的数据resolve出去

 findAreaByParentId(obj,resolve){
               findAreaByParentId(obj).then(data => {
                   if(data.responseCode =='1000'){
                       data.content.forEach(item=>{
                           item.ext1 = item.ext1 == 0 ? false: true
                       })
                       resolve(data.content);
                   }
               }).catch(error => {

               });
           },
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 正如Ant Design 官方介绍: "在中台产品的研发过程中,会出现不同的设计规范和实现方式,但其中往往存在很多...
    sunnyghx阅读 4,368评论 1 2
  • 前端开发面试题 面试题目: 根据你的等级和职位的变化,入门级到专家级,广度和深度都会有所增加。 题目类型: 理论知...
    怡宝丶阅读 2,717评论 0 7
  • 好像女孩子一过二十五岁,爸妈就特别着急,尤其是当你快接近三十岁,那恨不得让你随便找个男的将就一下就凑合一辈...
    漓墨酱阅读 270评论 0 1
  • 我一直以为人是慢变老的 其实不是 人是一瞬间变老的 满怀希望的人往往易于冲动 一旦失望了 反而到冷静了 人有时候真...
    孤岛春夏阅读 10,068评论 2 57
  • 【今日学习】 一、走进佛学 佛学基础课,不是信仰上的真理,而是事实和思辨性的知识,是佛学,不是佛教。 1. 佛学影...
    落花吟阅读 545评论 3 1

友情链接更多精彩内容