当前位置:首页 > VUE

vue整合ztree实现树状

2026-02-23 12:10:51VUE

整合 Vue 与 ZTree 实现树状结构

安装依赖

确保项目中已引入 jQuery 和 ZTree 相关文件。ZTree 依赖 jQuery,需提前引入:

<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/ztree@3.5.48/js/jquery.ztree.all.min.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/ztree@3.5.48/css/zTreeStyle/zTreeStyle.css">

Vue 组件封装

创建一个 Vue 组件封装 ZTree 的逻辑,通过 ref 操作 DOM 并初始化树:

vue整合ztree实现树状

<template>
  <div>
    <ul id="treeDemo" class="ztree" ref="ztree"></ul>
  </div>
</template>

<script>
export default {
  props: {
    treeData: {
      type: Array,
      default: () => []
    },
    setting: {
      type: Object,
      default: () => ({})
    }
  },
  mounted() {
    this.initZTree();
  },
  methods: {
    initZTree() {
      $.fn.zTree.init($(this.$refs.ztree), this.setting, this.treeData);
    }
  },
  watch: {
    treeData(newVal) {
      this.initZTree();
    }
  }
};
</script>

配置与数据格式

ZTree 要求数据格式为特定结构的数组,每个节点需包含 idpIdname 等字段。示例配置:

vue整合ztree实现树状

const setting = {
  data: {
    simpleData: {
      enable: true,
      idKey: "id",
      pIdKey: "pId",
      rootPId: 0
    }
  },
  callback: {
    onClick: (event, treeId, treeNode) => {
      console.log(treeNode);
    }
  }
};

const treeData = [
  { id: 1, pId: 0, name: "父节点" },
  { id: 2, pId: 1, name: "子节点" }
];

在父组件中使用

将配置和数据通过 props 传递给封装好的 ZTree 组件:

<template>
  <ZTree :setting="setting" :treeData="treeData" />
</template>

<script>
import ZTree from "./ZTree.vue";

export default {
  components: { ZTree },
  data() {
    return {
      setting: {
        data: { simpleData: { enable: true, idKey: "id", pIdKey: "pId" } }
      },
      treeData: [
        { id: 1, pId: 0, name: "Root" },
        { id: 2, pId: 1, name: "Child" }
      ]
    };
  }
};
</script>

动态更新数据

通过 Vue 的响应式特性,修改 treeData 会自动触发 ZTree 重新渲染:

this.treeData = [...this.treeData, { id: 3, pId: 1, name: "New Node" }];

注意事项

  • jQuery 冲突:若项目中已使用其他版本的 jQuery,需检查兼容性。
  • 性能优化:大数据量时建议启用异步加载(async.enable)。
  • 样式隔离:ZTree 的 CSS 可能影响全局,建议使用 scoped 或手动覆盖样式。

通过以上步骤,可实现 Vue 与 ZTree 的无缝整合,保留 ZTree 全部功能的同时利用 Vue 的响应式管理数据。

标签: 树状vue
分享给朋友:

相关文章

代码实现vue

代码实现vue

创建Vue项目 使用Vue CLI快速初始化项目,确保已安装Node.js和npm/yarn: npm install -g @vue/cli vue create my-vue-project c…

vue compile 实现

vue compile 实现

Vue 编译实现原理 Vue 的编译过程将模板字符串转换为渲染函数,主要分为解析、优化和代码生成三个阶段。 解析阶段(Parse) 将模板字符串转换为抽象语法树(AST)。Vue 使用正则表达式和有…

vue实现定时

vue实现定时

Vue 实现定时功能的方法 使用 setInterval 和 clearInterval 在 Vue 中可以通过 setInterval 和 clearInterval 实现定时功能。在组件的 mou…

vue实现答辩

vue实现答辩

Vue 实现答辩系统的关键步骤 项目初始化与配置 使用 Vue CLI 或 Vite 创建项目,安装 Vue Router 管理路由,Pinia/Vuex 进行状态管理。配置 ESLint 和 Pre…

vue实现addclass

vue实现addclass

Vue 实现动态添加 class 的方法 在 Vue 中动态添加 class 可以通过多种方式实现,以下是常见的几种方法: 使用对象语法 通过绑定一个对象到 :class,可以动态切换 class…

vue实现增删

vue实现增删

Vue 实现增删功能 在 Vue 中实现增删功能通常涉及数据绑定、事件处理和列表渲染。以下是基于 Vue 2 或 Vue 3 的实现方法: 数据定义 初始化一个数组用于存储列表数据,并在 Vue 实…