el-cascader-panel 动态加载 + 初始化展开

vscode配置debugger

例子:查看element-ui所打包的js文件修改源码,随意打印测试查看控制台是否修改成功

例如:el-cascader-panel 源码压缩位置 node_modules\element-ui\lib\element-ui.common.js

通过debugger查看执行过程

el-cascader-panel 如何初始化

// 如何刷新:通过v-if控制刷新数据

默认通过v-model绑定初始值会报错

解决方案

<el-cascader-panel
                  ref="cascaderPanel"
                  v-model="bindVal"
                  :props="props"
                 
                ></el-cascader-panel>
// 监听节点初始化     
watch: {
    ifInitNodeLoading(val) {
      if (val) {
        // console.log("一级初始化已完成");
        this.$nextTick(() => {
          this.initNode();
        });
      }
    },
    ifSedInitNodeLoading(val) {
      if (val) {
        // console.log("二级初始化已完成");
        this.bindNodeInit();
        // 初始化完成
        this.rootInit = false;
// 在开始渲染你的其他接口数据
        this.init();
      }
    },
  },
    // methods
    // 手动初始化第二节点
    initNode() {
      const getComponentArr =
        this.$refs.cascaderPanel.$children[0].$children[0].$children;
      for (let index = 0; index < getComponentArr.length; index++) {
        if (
          getComponentArr[index].$el.className === "el-cascader-node"
        ) {
          // 等同于触发@expand-change 方法
          getComponentArr[index].handleExpand();
          return;
        } else {
          // 第一节点无数据
          
        }
      }
    },
    // 绑定节点值
    bindNodeInit() {
      const menus = this.$refs.cascaderPanel.menus;
      let initObj = menus[1][0];
      this.bindVal= [initObj.parent.value, initObj.value];
      this.ifSedInitNodeLoading = false;
      // 测试获取选中节点
      // this.$nextTick(() => {
      //   console.log(this.$refs.cascaderPanel.getCheckedNodes()[0].pathLabels);
      // });
    },
    // 懒加载
     getLoad(node, resolve) {
      const { root, level, value } = node;
      if (root) {
        this.rootInit = root; // 判断初始化
      }
      let list = [];
      let key = level === 0 ? '初始化请求参数' : value;
      // 你的接口请求
      api(key).then((ele) => {
        ele.data.map((item) => {
          list.push({
            label: item.name,
            value: item.id,
            leaf: level >= 1,
          });
        });
        if (this.rootInit) {
          // 一级初始化完成
          this.ifInitNodeLoading = level === 0;
          // 二级初始化完成
          this.ifSedInitNodeLoading = level === 1;
        }
        resolve(list);
      });
    },

如有更好的解决方法,请告知我学习学习。

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值