当前位置:首页 > 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使用vr实现标注

vue使用vr实现标注

Vue 中使用 VR 实现标注的方法 在 Vue 项目中结合 VR 技术实现标注功能,可以通过 WebXR 和 Three.js 等库实现。以下为具体实现方法: 安装依赖 确保项目中已安装 Thre…

vue 指令实现

vue 指令实现

Vue 指令实现 Vue 指令是 Vue.js 提供的特殊属性,用于在 DOM 元素上添加特殊行为。指令以 v- 前缀开头,例如 v-model、v-if、v-for 等。以下是实现自定义指令和常用内…

vue实现alert

vue实现alert

实现自定义 Alert 组件 在 Vue 中可以通过组件化方式实现自定义 Alert 弹窗。以下是基于 Vue 3 的实现示例: 组件代码 (Alert.vue) <template>…

vue 实现拖拽

vue 实现拖拽

Vue 实现拖拽功能 使用 HTML5 原生拖拽 API HTML5 提供了原生的拖拽 API,可以通过 draggable 属性和相关事件实现拖拽功能。 <template> &l…

vue实现登出

vue实现登出

实现Vue登出功能 登出功能通常涉及清除用户会话、令牌或本地存储的数据,并重定向到登录页面。以下是几种常见的实现方式: 清除用户令牌和状态 在Vuex的store中定义一个logout mutati…

vue路由实现

vue路由实现

Vue 路由实现 Vue Router 是 Vue.js 的官方路由管理器,用于构建单页面应用(SPA)。以下是 Vue Router 的基本实现步骤和核心功能。 安装 Vue Router 通过…