懒加载树选中节点

<template>
  <div class="login">
    <el-tree
      :props="props"
      ref="tree"
      :load="loadNode"
      @check-change="checkChange"
      @check="check"
      @current-change="currentChange"
      node-key="id"
      lazy
      show-checkbox
    ></el-tree>
  </div>
</template>
<script>
export default {
  name: "Login",
  data() {
    return {
      props: {
        label: "name",
        children: "zones",
        isLeaf: "leaf",
      },
      keys: ["421512512", "2451", "333333", "333555"],
    };
  },
  methods: {
    check(data, nodes) {
      console.log("check==>", data.name, nodes);
    },
    checkChange(data, isSelected, childSelected) {
      console.log("checkChange===>", data.name, isSelected, childSelected);
    },
    currentChange(data, node) {},
    loadNode(node, resolve) {
      let _this = this;
      setTimeout(() => {
        console.log("after:", _this.$refs.tree.getCheckedKeys(), _this.keys);
        if (_this.$refs.tree.getCheckedKeys().length == 0) {
          _this.$refs.tree.setCheckedKeys([]);
        } else {
          _this.$refs.tree.setCheckedKeys(_this.$refs.tree.getCheckedKeys());
        }
      }, 3000);
      if (node.level === 0) {
        return resolve([{ id: "111", name: "region" }]);
      }
      if (node.level === 1) {
        let that = this;
        setTimeout(() => {
          const data = [
            {
              id: "222",
              name: "leaf",
              leaf: true,
            },
            {
              id: "333",
              name: "zone",
            },
            {
              id: "444",
              name: "zone1",
            },
            {
              id: "555",
              name: "zone2",
            },
          ];

          resolve(data);
        }, 500);
        setTimeout(() => {
          that.$refs.tree.setCheckedKeys(that.keys);
        }, 1000);
      }
      if (node.level > 1 && node.data.id == "444") {
        let that = this;
        resolve([
          {
            id: "421512512",
            name: "zoneChild",
          },
          {
            id: "2451",
            name: "zoneChild",
          },
          {
            id: "444333",
            name: "zoneChild",
          },
          {
            id: "444555",
            name: "zoneChild",
          },
        ]);
        setTimeout(() => {
          that.$refs.tree.setCheckedKeys(that.keys);
        }, 1000);
      } else if (node.level > 1 && node.data.id == "333") {
        let that = this;
        resolve([
          {
            id: "333333",
            name: "zoneChild213",
          },
          {
            id: "333555",
            name: "zoneChild21",
          },
          {
            id: "441241",
            name: "zoneChild21",
          },
          {
            id: "333152412",
            name: "zoneChild21",
          },
        ]);
        setTimeout(() => {
          that.$refs.tree.setCheckedKeys(that.keys);
        }, 1000);
      } else {
        return resolve([]);
      }
    },
  },
};
</script>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值