vue+elementUI tree 一层层加载

要实现懒加载必须加 lazy 属性

<el-tree  props="defaultProps"   :load="loadNode"   :expand-on-click-node="false"   node-key="id"     lazy     accordion   @node-click="handleNodeClick"></el-tree>

export default {
  data () {
    return {

      treeData: [],
      childTreeData: [],
      defaultProps: {
        label: "name",
        id: "id"
      },
      detailTreeDate: [],
      node_had: [], // 这里是关键!在data里面定义一个变量,将node.level == 0的node存起来
      resolve_had: [], // 同上,把node.level == 0的resolve也存起来

    },

methods:{

 getTreeData(termSysId) {
      // termSysId 下拉框选择值Id
      let _this = this;
      _this.$http({
            url: _this.$http.adornUrl(_this.apiUrl.getTopVocabularyId),
            method: 'get',
            params: _this.$http.adornParams({'vocabularyId':_this.form.termSys},false)
          }).then(({data}) => {
               if (data && data.success == true) {
                _this.treeData = data.data
                _this.detailTreeDate = [];
                  _this.node_had.childNodes = []; // 把存起来的node的子节点清空,不然会界面会出现重复树!
                  _this.loadNode(_this.node_had, _this.resolve_had); // 再次执行懒加载的方法
        } else {
          _this.$message({
                  showClose: true,
                message: data.msg,
                type: 'error'
              });
        }    
          })
    },
    getChildrenNode(node, resolve) {
      // 获取二级节点数据
      let conceptId = node.data.id;
      let _this = this;
      _this.$http({
            url: _this.$http.adornUrl(this.apiUrl.treeNavigate),
            method: 'get',
            params: _this.$http.adornParams({'id':conceptId},false)
          }).then(({data}) => {
               if (data && data.success == true) {
                this.childTreeData = data.data
                resolve(this.childTreeData);
        } else {
          _this.$message({
                  showClose: true,
                message: data.msg,
                type: 'error'
              });
        }    
          })
    },
    loadNode(node, resolve) {
      if (node.level === 0) {
        // 请求一级tree菜单
        this.node_had = node; // 这里是关键!在data里面定义一个变量,将node.level == 0的node存起来
        this.resolve_had = resolve; // 同上,把node.level == 0的resolve也存起来
        return resolve(this.treeData);
      }
      if (node.level === 1 || node.level > 1) {
        //  请求二级tree菜单及其他子级节点
        this.getChildrenNode(node, resolve);
      }
    },

}

}}

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值