zoukankan      html  css  js  c++  java
  • Ztree异步加载自动展开节点

    在Ztree的官网Demo中,有自动展开的例子,是通过设置节点属性open:true来实现自动展开的,但是在异步加载中,这个属性设置为true也不会自动展开,因为open:true是指在有子节点的情况下展开,在异步加载之前,当前节点是没有子节点的,所以无法打开。
    异步加载自动展开解决方法如下:

    1.设置ztree的加载完成的回调函数:

    setting = {  
        ......              
        callback: {
            ......
            onAsyncSuccess: zTreeOnAsyncSuccess  
        }  
    };

    onAsyncSuccess是指加载完成后要调用的方法,其他节点的设置请参考ztree的官网Demo.

    2.编写方法zTreeOnAsyncSuccess

    var firstAsyncSuccessFlag = 0;
    function zTreeOnAsyncSuccess(event, treeId, msg) {  
    if (firstAsyncSuccessFlag == 0) {  
              try {  
                     //调用默认展开第一个结点  
                     var selectedNode = zTree.getSelectedNodes();  
                     var nodes = zTree.getNodes();  
                     zTree.expandNode(nodes[0], true);  
                  
                     var childNodes = zTree.transformToArray(nodes[0]);  
                     zTree.expandNode(childNodes[1], true);  
                     zTree.selectNode(childNodes[1]);  
                     var childNodes1 = zTree.transformToArray(childNodes[1]);  
                     zTree.checkNode(childNodes1[1], true, true);  
                     firstAsyncSuccessFlag = 1;  
               } catch (err) {  
                  
               }  
                  
         }  
    }

    此方法可以自动加载第一级节点,try{} catch()是为了捕获节点不存在时的异常,这样可以使其不跑出js错误信息。
    firstAsyncSuccessFlag变量的作用是使tree只在页面初始化后自动展开一次,因为手动点击加号展开子节点的时候也会调用此方法,通过此变量来标识是否自动加载。

  • 相关阅读:
    Library 的打包
    Webpack 的高级概念
    前端文件下载的几种方式
    Webpack 的核心概念
    vue框架目录结构
    前端工程化的理解
    this.$nextTick
    某面试题
    React Fiber是什么
    Ant Design 在回显数据的时候报错, Error: must set key for <rc-animate> children
  • 原文地址:https://www.cnblogs.com/shy1766IT/p/4474749.html
Copyright © 2011-2022 走看看