0

0

vue如何利用树形控件z-tree动态添加数据

不言

不言

发布时间:2018-07-21 10:06:47

|

5600人浏览过

|

来源于php中文网

原创

本篇文章给大家分享的是关于vue如何利用树形控件z-tree动态添加数据,内容很不错,有需要的朋友可以参考一下,希望可以帮助到大家。

环境:vue 2.9.3; webpack;

插件:z-tree,jquery(cnpm install xxxx)

问题;由于数据量比较多,需要动态加载数据,默认第一次请求的数据是最高一级,然后子集都是空。

目标:点击第一级查询当前父节点的子集,并展开父节点下面的子节点。

立即学习前端免费学习笔记(深入)”;

实现方式:el-tree(element-ui里面的树形控件)、z-tree

el-tree

使用这个方法可以获取当前点击节点的数据row,根据row的属性判断当前节点是不是父节点,如果是父节点就请求接口,在当前节点push子节点的数据,但是push的时候还是有点蛋疼,直接插入某个位置并不好操作,虽然最后还是实现了(添加的索引位置),但是并不适用,导致第一次点击父节点并不会直接展开,因为第一次是请求数据,所以不会展开,第二次点击就会展开,因为数据已经push进去了,但是很显然不行,很不人性化。

我不知道是我处理的方式不对还是咋的,鉴于时间,我也没有细致看el-tree的动态加载数据,所以跳过这里。

 z-tree

引入z-tree和样式

import  'ztree'import 'ztree/css/metroStyle/metroStyle.css'import $ from 'jquery'

谱乐AI
谱乐AI

谱乐AI,集成 Suno、Udio 等顶尖AI音乐模型的一站式AI音乐生成平台。

下载

配置信息

shuyusetting:{
          view: {
            showLine: false
          },
          data: {
            simpleData: {
              enable: true
            }
          },
          callback: {
            onClick: this.shuyuOnClick,  //点击函数
            onExpand: this.shuyuOnExpand, // 展开内容          }
        },

引用z-tree

 

    // 注意id,下面需要用到id

    初始化控件,显示最顶级数据      var params=new Object();

    this.$http.post(this.ip + '/xhhms/rest/interRemoteReportController/v1/getKnowledge', params, {
    headers: {
    'X-AUTH-TOKEN': this.token
    }
    }).then((res) => {
    var data = JSON.parse(res.data);
    //console.log(data);
    if (!!data&&data.status=="1") {
    $.fn.zTree.init($("#shuyuSelect"), this.shuyusetting, data.data);  // 初始化数据 id需要和上面一样 第二个是配置信息 第三个是顶层的数据

    // console.log(this.knowledgetreedata);
    } else {
    return false;
    }
    }, (err) => {
    console.log(err);
    });

    接下来是两个对应配置的函数

        shuyuOnClick(event, treeId, treeNode){
            if(!treeNode.isParent){   // 判断当前节点不是父级节点 //根据自己的数据来 
              var acknowledgeid = treeNode.id;
              var params= {id:acknowledgeid};
              this.$http.post(this.ip+'/xhhms/rest/interRemoteReportController/v1/getKnowledgeByid', params, {
                headers: {'X-AUTH-TOKEN': localStorage.getItem('token') }
              }).then((res) => {
                var data = JSON.parse(res.data);
                if (!!data&&data.status=="1") {
                  //console.log(data.data);
                  document.getElementById('edit-iframe').contentWindow.postMessage(JSON.stringify({"DescriptionToReport":data.data.description}),"*");
                  document.getElementById('edit-iframe').contentWindow.postMessage(JSON.stringify({"ConclusionToReport":data.data.conclusion}) ,"*");
                  this.description = data.data.description;
                  this.conclusion = data.data.conclusion;
                } else {
                  return false;
                }
              }, (err) => {
                    console.log(err);
              });
            }else{
              // 是父级  请求子级增加内容
              this.shuyuOnExpand(event, treeId, treeNode);
            }
          },
          shuyuOnExpand(event, treeId, treeNode){
            console.log("shuyuOnExpand");
              var treeNodeId = treeNode.id;
              if(treeNodeId == 0){
                return;
              }else{
              var params={parentid:treeNodeId};
              this.$http.post(this.ip + '/xhhms/rest/interRemoteReportController/v1/getKnowledge', params, {
                headers: {'X-AUTH-TOKEN': localStorage.getItem('token') }
              }).then((res) => {
                var data = JSON.parse(res.data);
                console.log("data");
                if (!!data&&data.status=="1") {
                  var tree = $.fn.zTree.getZTreeObj("shuyuSelect"); //重新渲染
                  if (!treeNode.zAsync){
                      tree.addNodes(treeNode, data.data);
                      treeNode.zAsync = true;
                  } else{
                      tree.reAsyncChildNodes(treeNode, "refresh");  //刷新内容
                  }
                } else {
                  return false;
                }
              }, (err) => {
                    console.log(err);
              });
              }
    
          },

    这是两个核心的函数。

     相关推荐:

    关于Node中事件循环的解析

    Vue中class与style绑定以及条件与列表渲染的分析

    相关专题

    更多
    Java 桌面应用开发(JavaFX 实战)
    Java 桌面应用开发(JavaFX 实战)

    本专题系统讲解 Java 在桌面应用开发领域的实战应用,重点围绕 JavaFX 框架,涵盖界面布局、控件使用、事件处理、FXML、样式美化(CSS)、多线程与UI响应优化,以及桌面应用的打包与发布。通过完整示例项目,帮助学习者掌握 使用 Java 构建现代化、跨平台桌面应用程序的核心能力。

    37

    2026.01.14

    php与html混编教程大全
    php与html混编教程大全

    本专题整合了php和html混编相关教程,阅读专题下面的文章了解更多详细内容。

    19

    2026.01.13

    PHP 高性能
    PHP 高性能

    本专题整合了PHP高性能相关教程大全,阅读专题下面的文章了解更多详细内容。

    37

    2026.01.13

    MySQL数据库报错常见问题及解决方法大全
    MySQL数据库报错常见问题及解决方法大全

    本专题整合了MySQL数据库报错常见问题及解决方法,阅读专题下面的文章了解更多详细内容。

    19

    2026.01.13

    PHP 文件上传
    PHP 文件上传

    本专题整合了PHP实现文件上传相关教程,阅读专题下面的文章了解更多详细内容。

    16

    2026.01.13

    PHP缓存策略教程大全
    PHP缓存策略教程大全

    本专题整合了PHP缓存相关教程,阅读专题下面的文章了解更多详细内容。

    6

    2026.01.13

    jQuery 正则表达式相关教程
    jQuery 正则表达式相关教程

    本专题整合了jQuery正则表达式相关教程大全,阅读专题下面的文章了解更多详细内容。

    3

    2026.01.13

    交互式图表和动态图表教程汇总
    交互式图表和动态图表教程汇总

    本专题整合了交互式图表和动态图表的相关内容,阅读专题下面的文章了解更多详细内容。

    45

    2026.01.13

    nginx配置文件详细教程
    nginx配置文件详细教程

    本专题整合了nginx配置文件相关教程详细汇总,阅读专题下面的文章了解更多详细内容。

    9

    2026.01.13

    热门下载

    更多
    网站特效
    /
    网站源码
    /
    网站素材
    /
    前端模板

    精品课程

    更多
    相关推荐
    /
    热门推荐
    /
    最新课程
    关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
    php中文网:公益在线php培训,帮助PHP学习者快速成长!
    关注服务号 技术交流群
    PHP中文网订阅号
    每天精选资源文章推送

    Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号