实例详解ztree在vue项目中使用并且带有搜索功能

zTree 是一个依靠 jQuery 实现的多功能 “树插件”。优异的性能、灵活的配置、多种功能的组合是 zTree 最大优点。

我们是成立于2013年的成都网站建设公司,提供网站建设,电商网站设计开发,成都外贸网站建设,响应式网页设计,小程序开发、等服务。为客户创造有价值的品牌营销体验,让互联网提升企业的竞争力!

上篇文章给大家介绍了vue中如何使用ztree,大家可以点击查看。

之前博客介绍过怎么在vue里展示以及获取点击元素的内容,此文章之介绍搜索功能

html





    main.js需要单独引入

    import "./../static/ztree/js/jquery.ztree.exhide-3.5.min.js";

    如果不单独引入这个会获取不到很多元素,在input回车事件或者点击事件的时候直接执行此事件即可

    代码部分

    expand_ztree(treeId) {
      var treeObj = $.fn.zTree.getZTreeObj(treeId);
      treeObj.expandAll(true);
     },
    close_ztree(treeId) {
      var treeObj = $.fn.zTree.getZTreeObj(treeId);
      var nodes = treeObj.transformToArray(treeObj.getNodes());
      var nodeLength = nodes.length;
      for (var i = 0; i < nodeLength; i++) {
      if (nodes[i].id == '0') {
       //根节点:展开
       treeObj.expandNode(nodes[i], true, true, false);
      } else {
       //非根节点:收起
       treeObj.expandNode(nodes[i], false, true, false);
      }
      }
     },
    search_ztree(treeId, searchConditionId) {
      this.searchByFlag_ztree(treeId, searchConditionId, "");
     },
    searchByFlag_ztree(treeId, searchConditionId, flag) {
      //<1>.搜索条件
      var searchCondition = $('#' + searchConditionId).val();
      //<2>.得到模糊匹配搜索条件的节点数组集合
      var highlightNodes = new Array();
      if (searchCondition != "") {
      var treeObj = $.fn.zTree.getZTreeObj(treeId);
      highlightNodes = treeObj.getNodesByParamFuzzy("name", searchCondition, null);
      }
      //<3>.高亮显示并展示【指定节点s】
      this.highlightAndExpand_ztree(treeId, highlightNodes, searchCondition, flag);
     },
    highlightAndExpand_ztree(treeId, highlightNodes, tx, flag) {
      var treeObj = $.fn.zTree.getZTreeObj(treeId);
      //<1>. 先把全部节点更新为普通样式
      var treeNodes = treeObj.transformToArray(treeObj.getNodes());
      for (var i = 0; i < treeNodes.length; i++) {
      treeNodes[i].highlight = false;
      treeObj.updateNode(treeNodes[i]);
      }
      //<2>.收起树, 只展开根节点下的一级节点
      this.close_ztree(treeId);
      //<3>.把指定节点的样式更新为高亮显示,并展开
      if (highlightNodes != null) {
      for (var i = 0; i < highlightNodes.length; i++) {
       if (flag != null && flag != "") {
       if (highlightNodes[i].flag == flag) {
        //高亮显示节点,并展开
        highlightNodes[i].highlight = true;
        treeObj.updateNode(highlightNodes[i]);
        //高亮显示节点的父节点的父节点....直到根节点,并展示
        var parentNode = highlightNodes[i].getParentNode();
        var parentNodes = this.getParentNodes_ztree(treeId, parentNode);
        treeObj.expandNode(parentNodes, true, false, true);
        treeObj.expandNode(parentNode, true, false, true);
       }
       } else {
        treeObj.updateNode(highlightNodes[i]);
       var parentNode = highlightNodes[i].getParentNode();
       var parentNodes = this.getParentNodes_ztree(treeId, parentNode);
       treeObj.expandNode(parentNodes, true, false, true);
       treeObj.expandNode(parentNode, true, false, true);
       }
      }
      }
     },
    getParentNodes_ztree(treeId, node) {
      if (node != null) {
      var treeObj = $.fn.zTree.getZTreeObj(treeId);
      var parentNode = node.getParentNode();
      return this.getParentNodes_ztree(treeId, parentNode);
      } else {
      return node;
      }
     }

    展示

    实例详解ztree在vue项目中使用并且带有搜索功能

    这个有个小小的bug,就是做键盘按下或者抬起的时候会有问题,https://yq.aliyun.com/articles/308489,这个文章就解决了这个问题

    实例详解ztree在vue项目中使用并且带有搜索功能

    总结

    以上所述是小编给大家介绍的ztree在vue项目中使用并且带有搜索功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对创新互联网站的支持!


    网站题目:实例详解ztree在vue项目中使用并且带有搜索功能
    当前链接:http://azwzsj.com/article/jscjis.html